Java1.5で自作プログラムを作成していますが、System.inメソッドの使い方と文字の認識について質問です

このQ&Aのポイント
  • Java1.5で独学で勉強しており、自分なりにサイトを参考にしつつ、自分で自分に問題を出しては解いている最中です。
  • 1~1000まで表示されるプログラムの作成で、System.inメソッドの使い方と文字の認識について質問があります。
  • 質問内容は、System.inメソッドの仕様と文字の認識に関するものです。また、改良点も教えていただければと思っています。
回答を見る
  • ベストアンサー

お力貸して頂ければ幸いです。

お力貸して頂ければ幸いです。 Java1.5で独学で勉強しており、自分なりにサイトを参考にしつつ、 自分で自分に問題を出しては解いている最中です。 自分で作った問題にも関わらず、わからなくなってしまったのでご質問させて頂きたいと思います。 Q 1~1000まで表示されるプログラムの作成 改行はコマンドプロンプトから入力された数字分で改行させる(System.inの利用) 自分なりに出した回答は下記です。 import java.io.*; class Kadai2{ public static void main (String args[]){ int i = 0; int f = 0; System.out.println("数字を入力してください"); System.out.println("1文字以上は読み込みません"); System.out.println("文字数を超えた場合は最初の文字のみ読み込みます"); System.out.println(); try{ i = System.in.read(); //System.out.println((char)i); }catch(IOException e){} for(f = 0; f <= 1000; f++){ if(f == i){ System.out.print(f); System.out.println(""); } else{ System.out.print(" " + f); } } } } ※実行しても自分の思うように動きません 不明点は2点あります。 1点目はSystem.inメソッドの仕様?的なもの (apiを見ても理解出来ずじまいでした・・・。これは変数の代入先の型はINT型でないと使えないのでしょうか?) 2点目はSystem.inメソッドから入力した場合の、文字が数字で入力しても文字コードで 数字として認識されない点 (その為、if文の判定が意味ない状態) 質問が下手で申し訳ありませんが、お時間あるときに教えて頂ければと思います。 自分ではこのようにやってますが、もっと他にこのプログラムはこうした方がいいよという部分 ありましたら教えて頂ければ幸いです。

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

Scanner sc = new Scanner(System.in); System.out.print("数字を入力してください。 "); int c = sc.nextInt(); System.out.println(); for(int f=0;f<=20;++f){ if (f==c){ System.out.println(" "+f); }else{ System.out.print(" "+f); } } System.out.println(); 出力の関係上、1000ではなく、上限を20にしています。 1000に変えればいいだけですが。 入出力結果 数字を入力してください。 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 こんな感じを求めているのですか??

theyouth
質問者

お礼

tom11さん ありがとうございます。 Scannerクラスと言うのを自分は存在すら知らなかったので 非常に勉強になりました。 int c = sc.nextInt(); ここはint型にキャストしてるって考えでいいのでしょうか?

その他の回答 (1)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

>int c = sc.nextInt(); >ここはint型にキャストしてるって考えでいいのでしょうか? このような場合、多分、キャストとは、言わないと思います。 scannerクラスの、メソッドの一つで戻り値が int?Integer?どちらかだと思います。 APIのURLは、ご存知ですよね。1.5なら、以下のURLです。 ここで、メソッドを確認してください。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html 後は、ヒントが手にはいったので、Googleで検索したほうが 早いですし、詳しいですよ。 例えば scanner java コンソール、、、で、以下の URLがヒットしました。 コンソール入力に関して詳しく書いています。 http://linux971.blog92.fc2.com/blog-entry-73.html では

関連するQ&A

  • javaの超初心者です。ご教授いただけたら幸いです。

    javaの超初心者です。ご教授いただけたら幸いです。 ある書籍を元にやっているのですが、演習に答えがなく、わからないためその問題をお願い致します。 2桁の整数値(10~99)を当てさせる数当てゲームを作成せよ。という問題です。 下記は少しやってみました。 import java.util.Random; import java.util.Scanner; class Kazuate99 { public static void main(String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in);    int no = rand.nextInt(); ← ここがたぶん違う System.out.println("数当てゲーム開始!!"); System.out.println("10~99の数を当てて下さい。"); int x; // プレーヤが入力した数 do { System.out.print("いくつかな : "); x = stdIn.nextInt(); if (x > no) System.out.println("もっと小さな数だよ。"); else if (x < no) System.out.println("もっと大きな数だよ。"); } while (x != no ); System.out.println("正解です。"); } } 宜しくお願い致します。

    • ベストアンサー
    • Java
  • 文字化けについて

    以下のコードでコンパイルすると 文字化けします。 どうすれば文字化けしなくできますか? new InputStreamReader(System.in)のところもEUC_JPにしたりしたのですが文字化けしてしまいました(汗) import java.io.*; public class test { public static void main(String agrs[]) { try { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String boyname,girlname; int goukei=0; System.out.println("男性の名前を入力してください"); boyname=in.readLine(); System.out.println(boyname); char boynameChar[]=boyname.toCharArray(); for(int i=0;i<boyname.length();i++) { goukei+=(int)boynameChar[i]; } System.out.println("女性の名前を入力してください"); girlname=in.readLine(); char girlnameChar[]=girlname.toCharArray(); for(int i=0;i<girlname.length();i++) { goukei+=girlnameChar[i]; } System.out.print(boyname+""と+girlname+"の相性は"+goukei%100+"%"); in.close(); } catch(IOException e) { } } }

  • プログラムの合体。

    jump7799_4836さん 2018/7/2103:34:44 public class Test2 { public static int メソッド () { System.out.println("メソッド()が呼ばれました"); return 0; } public static int メソッド (int i) { System.out.println("メソッド(int i)が呼ばれました"); return i; } public static int メソッド (int i, int j) { System.out.println("メソッド(int i, int j)が呼ばれました"); return i; } public static int メソッド (short s) { System.out.println("メソッド(short s)が呼ばれました"); return s; } public static int メソッド (double d) { System.out.println("メソッド(double d)が呼ばれました"); return (int) d; } } public メソッド class Test2 { public メソッド static void main(String[] args) { Test2.メソッド (); Test2.メソッド (1); Test2.メソッド (1,2); Test2.メソッド (1.1); Test2.メソッド ((short) 1); Test2.メソッド ((double)1); } } kouzou@GD348ZZD9:/WORK$ javac Test2.java Test2.java:29: エラー: class、interfaceまたはenumがありません public メソッド class Test2 { ^ Test2.java:30: エラー: <identifier>がありません public メソッド static void main(String[] args) { ^ エラー2個 2つのプログラムが合体することってあるのですか? いつもすみません。 解説のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • 文字化けについて

    以下のコードでコンパイルして日本語入力すると 文字化けします。 どうすれば文字化けしなくできますか? new InputStreamReader(System.in)のところもEUC_JPにしたりしたのですが文字化けしてしまいました(汗) import java.io.*; public class test { public static void main(String agrs[]) { try { BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String boyname,girlname; int goukei=0; System.out.println("男性の名前を入力してください"); boyname=in.readLine(); System.out.println(boyname); char boynameChar[]=boyname.toCharArray(); for(int i=0;i<boyname.length();i++) { goukei+=(int)boynameChar[i]; } System.out.println("女性の名前を入力してください"); girlname=in.readLine(); char girlnameChar[]=girlname.toCharArray(); for(int i=0;i<girlname.length();i++) { goukei+=girlnameChar[i]; } System.out.print(boyname+""と+girlname+"の相性は"+goukei%100+"%"); in.close(); } catch(IOException e) { } } }

    • ベストアンサー
    • Java
  • JAVAのfor文で困っています。

    JAVAの勉強をしていますが、本の練習問題でわからなくて困っています。for文で以下の処理を行いたいです(do,whileはなしです)が、 *を5個ごとに改行したいのですが、改行してくれません。 問題の部分↓ if (n % 5 == 0) System.out.println(); 何か良い方法はありませんか?お願いします。 ------------------------------------------------- //(数を読み込んで)だ個数だけ * を5個ごと改行しながら表示 int n = 0; for (int i = n; n <= 0;){ System.out.print("何個*を表示しますか : "); n = stdIn.nextInt(); } for (int i = 1; i <= n; i++){ System.out.print("*"); if (n % 5 == 0) System.out.println(); } ------------------------------------------------

    • ベストアンサー
    • Java
  • 九九を横に表示する。

    入力した整数までの九九を 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 以下略 のように表示したいのですが 私の作ったプログラムだと縦に表示されてしまいます。 1 2 3 4 5 6 7 8 9 のように。(-"-;A ... プログラムは以下の通りです。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class q07quiz07 { /** * @param args */ public static void main(String[] args)throws IOException { // TODO 自動生成されたメソッド・スタブ System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int i , j; i = 1; while(i <= num){ j = 1; while(j <= 9){ System.out.println(i*j+ " "); j++; } System.out.println(); i++; } } } 回答よろしくお願いします。

    • ベストアンサー
    • Java
  • javaのプログラムに関する質問

    * 入力された数値の数だけ、"*"を表示するメソッド * displayAsterメソッドを作成して下さい。 */ public class MethodAdd3 { public static void main(String[] args){ // 入力された数字をint型の数値に変換 int iInput = Integer.parseInt(args[0]); // displayAsterメソッドの呼び出し displayAster(iInput); } // ここにdisplayAsterメソッドを作成 public static void displayAster(int iInput1){ for(i=0; i<iInput1; i++){ System.out.print("*"); } System.out.println(""); } ここまで出来たのですが、コンパイルエラーになってしまいます。 考え方かヒントなど、知恵をお貸しください。

  • *を表示させるプログラムを

    //putChars()メソッドを呼ばず(使わず) for文のネストで、できますか import java.util.Scanner; class IsoscelesTriangleRB { //--- 文字cをn個連続表示 ---// static void putChars(char c, int n) { while (n-- > 0) System.out.print(c); } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("右下直角の三角形を表示します。"); System.out.print("段数は:"); int n = stdIn.nextInt(); for (int i = 1; i <= n; i++) { putChars(' ', n - i); // ' 'をn - i個表示 putChars('+', i); // '+'を i 個表示 System.out.println(); } } }

  • java for文、if文を使っての三角形

    例:1 23 456 78910 ・・・・・・のようにひょうじさせるプログラムを作成するのに、for文とIf文を使っての三角形を   作成したいのですが、If文の条件式が分からないのとどうしたら、上記のようなプログラムが   出来るのか教えてください。お願いします。 public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ // 行に表示させる個数を表現するための変数がないため今回、新たに変数を用意する。 int a = 1; //行の終わりを改行して1増やすための変数がないため今回、新たに変数を用意する。 int b = 1; // 1~100までの数字を用意する。 for (int i = 1; i <= 100; i++) { //変数iをSystem.out.printを使って変数iをコンソールの中に出力させる。 System.out.print(i); //System.out.println("")を使って改行する。 System.out.println(" "); //変数iに1増加して数字を順番にする。 i++; if(a <= i){ System.out.print(a);

  • countに実行した回数をいれたいです。

    javaのカウント回数について質問させて頂きます。 ユーザーから数字を入力した回数をint countに格納して 表示したいのですがコンパイルは通りますが実行できません。 elseの中にSystem.out.printlnした文字も表示されずどうやら elseを通ってなくatr[i]にも値が格納されてないようです。 調べた限りではわからなく宜しければアドバイスやご指摘をお願い致します。 import java.io.*; import java.util.Arrays; class last { public static void main(String[] args) throws IOException { int atr[]; atr = new int[25]; int count = 0; int your_plan[][] = new int[300][144]; //1日のスケジュール String dayplan; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ //絶対に通る System.out.println("数字を選択してください。"); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 0){ System.out.println("選択終了です。"); break; } else{ atr[count] = res; } count++; System.out.println(count); }

専門家に質問してみよう