プロが教えるわが家の防犯対策術!

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

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文の判定が意味ない状態)

質問が下手で申し訳ありませんが、お時間あるときに教えて頂ければと思います。
自分ではこのようにやってますが、もっと他にこのプログラムはこうした方がいいよという部分
ありましたら教えて頂ければ幸いです。

A 回答 (2件)

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

こんな感じを求めているのですか??
    • good
    • 0
この回答へのお礼

tom11さん

ありがとうございます。
Scannerクラスと言うのを自分は存在すら知らなかったので
非常に勉強になりました。

int c = sc.nextInt();
ここはint型にキャストしてるって考えでいいのでしょうか?

お礼日時:2010/01/01 13:24

>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/in …

後は、ヒントが手にはいったので、Googleで検索したほうが
早いですし、詳しいですよ。

例えば scanner java コンソール、、、で、以下の
URLがヒットしました。

コンソール入力に関して詳しく書いています。

http://linux971.blog92.fc2.com/blog-entry-73.html

では
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!