英大文字から小文字と記号をランダムに表示するプログラム改造方法

このQ&Aのポイント
  • この質問では、英大文字をランダムに表示するプログラムを改造して、小文字と記号も合わせて表示する方法についての助言を求めています。
  • 具体的な改造方法についての具体的なコードの提案も求められています。
  • 回答者は、Randomクラスを使用して英大文字、小文字、記号の範囲を指定し、乱数を生成することで、目的の結果を得ることができることを説明することができます。
回答を見る
  • ベストアンサー

小文字、大文字、記号をランダム表示

このプログラムは英大文字をランダムに表示するプログラムなのですが、これを小文字と記号も合わさった形で出力されるように改造するにはどうしたらいいでしょうか。コードを添えて下さると助かります。 import java.util.Random; public class Aruf{ public static void main(String[] args) { //Randomクラスのインスタンス化 Random rnd = new Random(); //変数の宣言 int ran; int a; char c; //10回繰り返す for(int b=0;b<10;b++){ //0~25の乱数を作成 ran = rnd.nextInt(26); //65を足して65~90にする a = 65 + ran; //charに型変換 c = (char)a; //表示 System.out.print(c); } } }

  • tnk48
  • お礼率9% (7/76)
  • Java
  • 回答数7
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ibara994
  • ベストアンサー率75% (9/12)
回答No.2

//0~51の乱数を作成 ran = rnd.nextInt(52); if(ran <= 25){  //65を足して65~90にする 大文字  a = 65 + ran; } else{  //71を足して97~122にする 小文字  a = 97 - 26 + ran; }

その他の回答 (6)

  • ibara994
  • ベストアンサー率75% (9/12)
回答No.7

>#4,6 ソースコードから推測して 学校などでプログラミングの初歩の初歩を学習してる最中の人だと思うよ まだユーザ関数の作り方までは習ってないような気がする

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.6

むしろ「文字列を与えてその中からランダムに選ぶ」とか「文字の配列を与えてその中から (以下略)」の方がよろしいのではないかと>#5. あと, 「やってみたのですが、うまくいきませんでした」なんていう報告は情報量 0 なので, はっきり言って無駄. 「どうやって (どのようなプログラムを書いて) どううまくいかなかったのか」を書いてください.

noname#147388
noname#147388
回答No.5

=_=) 共通化とかできないこなのかな。 こんな感じ http://ideone.com/xx0b3

noname#147388
noname#147388
回答No.4

>#2,3 拡張性もとめて http://ideone.com/W1vG1 みたいなほうがよくないか? char s; char e; は引数化してください。

tnk48
質問者

補足

やってみたのですが、うまくいきませんでした どのように書き換えたら良いですかね...

  • ibara994
  • ベストアンサー率75% (9/12)
回答No.3

No.2は早とちり。質問内容をよく読んでなかったです^^; //33~126の乱数を作成 a = 33 + rnd.nextInt(126 - 33 + 1);

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 何の記号を含めたいのかわかりませんがASCIIコードの範囲であれば http://e-words.jp/p/r-ascii.html ここに文字コードがあります。 65+(0~25)を足したものが出力されていますので これを 33+(0~93)を足してあげれば 表にある32~126の文字が出力されます。

関連するQ&A

  • javaのRandomで『a~z』までの乱数を表示させたいですが・・・。

    『a~z』の英小文字をランダムで表示させ、さらにint型変数countを『0~9』までランダムに発生させて取得した数だけ『a~z』をランダムに表示させたいのですが、表示結果が(例)aaaaa・・・ となってしまいます。本当は、acyxd・・・とランダムに表示させたいのですがどうすれば、よいでしょうか? import java.util.*; import java.io.*; class CharCheck{  public char charRandom(){ int n; char c = ' '; Random ran = new Random(); while(true){  n = ran.nextInt(123); if(n >= 97 && n <= 122){  c = (char)n;    break; }  }  return c; } public class RandomTest extends CharCheck{  public static void main(String args[]){   char ch[] = new char[10]; int count = 0; CharCheck ChChk = new CharCheck(); Random ran = new Random();   komoji = ran.nextInt(9);//英小文字をいくつ表示するかランダムで決める? (1以上とする) if(count == 0){    count++; } for(int i=0; i<count; i++){ ch[i] = ChChk.charRandom();    System.out.println(ch[i]); } } }

    • ベストアンサー
    • Java
  • JAVA初心者です。

    以下の文法でコンパイルエラーが出ます。 添削をお願いします。 import java.util.Random; public class Test{ public static void main(String[] args){ int n; for (n = 0; n < 200; n++){ int i; for (i = 0; i < 38; i++) { Random rnd = new Random(); int ran = rnd.nextInt(10); System.out.print(ran); System.out.print(" "); for (t = 0; t < 200; t++) } System.out.println(); } } }

    • ベストアンサー
    • Java
  • 変数を取得したい

    例えば、次のようなプログラムで1個の乱数を取得します。その取得した乱数の一番下の桁の数字(0~9)だけに着目し、変数iなどに値を取得するといったことは出来ますでしょうか? import java.util.*; public class RandomTest { public static void main(String[] args) { Random generator = new Random(); for(int i=0; i<1; i++){ int ran = generator.nextInt(); System.out.println(ran); } } }

    • ベストアンサー
    • Java
  • JAVAで配列を使って * を縦向きのグラフで表示したいです。

    JAVAの勉強をしています。 このプログラムは配列に乱数を生成して * を 横向きにするプログラムです。 練習問題で、以下のプログラムを書き換えて、* を縦向きのグラフで表示する問題なのですが、解く方法がわかりません。 どなたか答えもしくはヒントを下さい。 よろしくお願いします。 import java.util.Random; import java.util.Scanner; public class Test06_04 { public static void main (String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数 : "); int n = stdIn.nextInt(); //要素数を読み込む int[] a = new int[n]; //配列を生成 for (int i = 0; i < n; i++) { a[i] = 1+ rand.nextInt(10); } for (int i = 0; i < n; i++) { System.out.print("a[" + i + "] : "); for (int j = 0; j < a[i]; j++) System.out.print('*'); System.out.println(); } } }

    • ベストアンサー
    • Java
  • Javaで数独の自動解法プログラム

    Javaで次のようなプログラムを作りました。 次に、ここから実行で得られた数独を自動解法プログラムによって、解が「1つ or 複数」かを調べるようにしたいのですが、その自動解法プログラムは新しく作らなければいけないのでしょうか。 import java.util.Random; public class NumberPlace { public static void main(String[] args) { int i, j, k, l, m, n, check=0, count=0, tmp; int a[][] = new int [9][9]; Random rnd = new Random(); int ran; Random rnd1 = new Random(); int ran1; Random rnd2 = new Random(); int ran2; boolean A=false; while(A==false){ A=true; for ( i=0; i<9; i++ ) for ( j=0; j<9; j++ ) a[i][j] = 0; count = 0; for ( i=0; i<9; i++ ) { for ( j=0; j<9; j++ ) { ran = rnd.nextInt(9); tmp = ran + 1; check = 0; //System.out.println(tmp); for ( k=0; k<j; k++ )  //横列に入る数字をチェック if ( a[i][k] == tmp ) check = 1; for ( k=0; k<i; k++ )  //縦列に入る数字をチェック if ( a[k][j] == tmp ) check = 1; for ( k=(i/3)*3; k<(i/3)*3+3; k++ )  //ボックスに入る数字をチェック for ( l=(j/3)*3; l<(j/3)*3+3; l++ ) if ( a[k][l] == tmp ) check = 1; if ( check == 0 ) a[i][j] = tmp; if ( check == 1 ) j--; if ( count > 50000 ){ A=false;break;} count++; } count = 0; } } for ( i=0; i<30; i++ ) {    //0を入れる回数 ran1 = rnd1.nextInt(9); m = ran1; ran2 = rnd2.nextInt(9); n = ran2; if ( a[m][n] == 0 ) {  //0にしようとした場所が既に0だったら直前に戻る i--; } a[m][n] = 0; } for ( i=0; i<9; i++) { for ( j=0; j<9; j++ ) { if ( a[i][j] < 10 ) { System.out.print(" "); } System.out.print(a[i][j]);       } System.out.print("\n"); } } } これを(最初に入れる0の数を30個として)実行すると、次のようになります。 0 7 6 9 4 1 8 2 5 2 0 5 3 7 0 9 4 0 9 0 4 8 2 5 0 3 7 1 0 2 0 0 0 5 0 6 6 9 3 1 0 0 0 8 2 7 0 8 0 0 0 0 1 4 0 0 0 0 0 0 0 0 3 4 3 0 5 6 8 2 7 9 5 2 9 4 3 7 0 0 8 皆さんの回答の程宜しくお願いします。

  • ランダム表示文字について

    if ( open( IN,"hoge.txt" ) ) {   @line = <IN>;   close( IN ); } else {   exit; } $random1 = @line[rand(@line)]; $random2 = @line[rand(@line)]; $randam3 = @line[rand(@line)]; テキストファイルから1行文字をランダムに表示するプログラムを書き実行できたのですが、このままだとrandom1,2,3の変数に同じものが入ってしまう可能性があります。 これで全て違うものが入るようなプログラムを書きたいのですが、そのようなことは可能でしょうか?

    • ベストアンサー
    • CGI
  • 乱数を発生させて、それを配列して小さい順に並べる

    乱数の発生のさせ方は、質問集で見て import java.util.Random; class ransuu { public static void main(String args[]) { Random rand = new Random(); for ( int i = 0; i <10; i++){ int x = rand.nextInt(9); System.out.println(x); } } } を用いて表示できたのですが、そのあとの配列がよく分かりませんのでぜひ教えてください。ちなみに私の持っているテキストには任意の数(22、80、57、60、50など)を並べ替えるというものはあるのですが、今回のような乱数+配列の例が載っていないのでよく分かりませんでした。

    • ベストアンサー
    • Java
  • ランダム

    次のプログラムで同じ数字を出ないようにするにはどうすれば良いでしょうか。 import java.util.*; class RandomNum { public static void main(String args[]) { Random numRandom = new Random(); for (int i = 1; i <= 5; i++) { System.out.println(numRandom.nextInt(10)); } } }

    • ベストアンサー
    • Java
  • 乱数の作成について(初心者)

    Java初心者です。 -9から2の乱数を作成したのですが、乱数の出る確立が揃えられなくて困ってます。 どなたかお願いします。 import java.util.Random; class Rando2{ public static void main(String[] args){ Random x=new Random(); //-9から2の中から選びたい int n=x.nextInt(10); int f=x.nextInt(2);//0ならマイナスをつける if(2<n) n=-n;//-9から-3の作成(1/10の確立) else//-2から2の作成(1/20の確立) if(f==0) n=-n; System.out.print("あなたの好きな整数は"+n+"ですね?"); } }

    • ベストアンサー
    • Java
  • javaのプログラム

    int型の配列の各要素に1~10の乱数を代入し、各要素の値を縦向きの*のグラフで表示するプログラムを作っているのですが、結果がランダムででるので、自分の書いたプログラムが正しいのかわかりません。ソースを載せますので合っているのか間違っているか教えて下さい。もし間違っているならどこが間違いなのか教えていただけると嬉しいです。よろしくお願いします。 ●ソース import java.util.Random; import java.util.Scanner; class Graph { public static void main(String[] args){ Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数:"); int n = stdIn.nextInt(); int a[] = new int[n]; for (int i = 0; i < n; i++) a[i] = 1 + rand.nextInt(10); for (int i = 1; i <= 10; i++){ for (int j = 0; j < n; j++) if (a[j] <= i) System.out.print("* "); else System.out.print(" "); System.out.println(); } } } ●実行例 要素数:12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    • ベストアンサー
    • Java

専門家に質問してみよう