【问题标题】:For loop advances two numbers instead of oneFor循环前进两个数字而不是一个
【发布时间】:2014-10-16 19:16:07
【问题描述】:

当我输入第一个输入时,它会同时打印第二个和第三个。控制台:

Please enter the grade for course 1
A
Please enter the grade for course 2
Please enter the grade for course 3

代码:

import java.io.IOException;
public class MyGradeLoops {
public static void main(String[] args) throws IOException{
int grade;
for (int i=1; i<6; i++) {
    System.out.println("Please enter the grade for course " + i);
    grade = System.in.read();
    }
    System.out.println("Thank your for submitting your grades");
   }
  }

【问题讨论】:

  • 问题是什么?你希望你的程序做什么?

标签: java loops for-loop


【解决方案1】:

System.in.read(); 将从用户输入中读取下一个字节。当您键入一个数字并按 Enter 时,它会计算至少三个字节(另外两个字节对应于\r\n 换行符)。

您可以简单地使用Scanner 实例并使用Scanner#nextInt() 读取整数。

Scanner in = new Scanner(System.in);
for (int i = 1; i < 6; i++) {
    System.out.println("Please enter the grade for course " + i);
    grade = in.nextInt();
}

如果System.in.read() 是一个要求,并且成绩是作为字符串输入的,那么这是一种(有点老套的)方法:

for (int i = 1; i < 6; i++) {
    String grade = "";
    System.out.println("Please enter the grade for course " + i);
    char c;
    while((c = (char) System.in.read()) != '\n') {
        grade += c;
    }
    System.out.println(grade);
}

【讨论】:

  • 我需要为我的班级使用 System.in.read() 方法。它也需要是一个字母,我不认为可以接受字母?
  • @anthonycorrado 见this postSystem.in.read 将输入读取为字节,因此您必须转换为 char 并读取直到新行被命中。
猜你喜欢
  • 2014-01-24
  • 2018-11-21
  • 2020-01-14
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
相关资源
最近更新 更多