我正在使用do while循环
public class Program {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
float grades;
int subj,i = 1;
System.out.printf(" Enter how many subjects: ");
subj = input.nextInt();
do {
System.out.printf("\nEnter Grade [%d]: ", i);
i++;
}while(i <= subj);
grades = input.nextInt();
}
}
输出
Enter how many subjects: 5
Enter Grade [1]: can't go back here
Enter Grade [2]: can't go back here
Enter Grade [3]: can't go back here
Enter Grade [4]: can't go back here
Enter Grade [5]: I'm automatically here right after I run the project
新来的不是借口,所以我做了一个研究,但大多数都是一种方式。
我想在运行时同时显示多个可以保存和接受输入的行,这就像将行转换为可以在运行时编辑或更改的字段一样。
编辑[1]:IDE是NetBeans 8。2
编辑[2]:我已经有一个工作程序(这是一种方式),它只是来到我的脑海,我有点想升级它。
2条答案
按热度按时间nr9pn0ug1#
问题不是它跳过了读,而是它在循环过程中没有阅读。如果你想在每次循环运行时从输入读取,你需要把下一个输入放到循环内部。最重要的是,如果您只有一个包含分数的浮点数,那么每当收到新的分数时,该变量将被覆盖。这可以通过添加一个浮点数数组来代替标准浮点数来解决。代码看起来像这样:
(对此进行了一些其他编辑)
这就是它现在做的,一行一行。方法的前两行只是示例化要在方法中使用的变量。
i
设置为0,以允许更容易地编辑数组。接下来的两个是获取你输入的主题数量。相当标准。下一行,设置grades
的行将为任意多个主题创建一个新的浮点数组。然后,循环运行。在循环中,第一行是打印,i+1
对应于主题编号,而不是数组的索引。之后的一行将把输入的等级放入数组中,索引为i
,之后的一行将递增i
。之后,循环检查检查i
的索引是否小于受试者的数量。这是可行的,因为i
从0开始,当它是5时,它只是插入列表中的第4个元素,也就是最后一个元素。**注意:**Arrays从0开始,所以
i
的示例化位置为0,其他检查i
的示例也会发生变化。他们正在弥补这种变化。bzzcjhmw2#
您不会扫描循环内的任何输入。你只显示一个文本并递增
i
。当你最终要求输入 * 在循环外 * 时,你已经打印了所有要求用户输入成绩的行,
i
的值已经超过了科目的数量。