我使用以下代码段从java中的控制台获取10个输入,并尝试以*******12
格式打印它们。在运行时,我输入12,13,14,15作为输入,然后程序终止。现在有3个问题:
代码:
public static void main(String[] args) {
for (int i = 0 ; i <10 ;i++){
try {
int j= System.in.read();
System.out.println("**********"+j);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
,输出结果为:
12
**********49
**********50
**********10 13
**********49
**********51
**********10 14
**********49
**********52
**********10 15
**********49
建立成功(总时间:14秒)
答案 0 :(得分:7)
49,52和10是您输入的字符的ASCII字符代码, 1 4 输入。
您可以继续使用System.in.read()
,并在每个角色到达时对其进行处理。您可以执行以下操作:
这当然正是Scanner.nextInt()
为你做的事情。
答案 1 :(得分:3)
您可能希望使用Scanner
和nextInt()
方法。试试这个:
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
int j = s.nextInt();
System.out.println("**********" + j);
}
}
请注意,read()
是InputStream
类的方法。您通常不希望直接访问InputStream
。
答案 2 :(得分:1)
如果您在IDE之外运行它
String input = System.console().readLine();
答案 3 :(得分:1)
当您编写一个字符然后按Enter键时,它会转换为3个字节:character_code + \ r + \ n。在你的情况下,i变量需要3次迭代。
对于输入的2个字符,它会转换为:character_code + character_code + \ r + \ n。这需要4次迭代。
顺便说一句,我有相同代码的另一个输出:
12 **********49 **********50 **********13 **********10 13 **********49 **********51 **********13 **********10 14 **********49 **********52
答案 4 :(得分:0)
这也应该有助于你想要使用bufferedReader
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
for(int i = 0; i<10; i++){
int inp = Integer.parseInt(stdin.readLine());
System.out.println("----------- "+inp);
}