我正在使用做循环
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] :我已经有一个这样的工作程序(这是一种方法),它刚浮现在我的脑海,我有点想对其进行升级。
答案 0 :(得分:0)
问题不在于它跳过读取,而是在循环期间不读取。如果要在每次循环运行时从输入中读取内容,则需要将下一个放入循环中。最重要的是,如果只有一个包含成绩的浮点数,则在收到新成绩时将覆盖该变量。可以通过添加一个浮点数组代替标准浮点来解决此问题。代码看起来像这样:
public class Program {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int subj,i = 0;
System.out.printf(" Enter how many subjects: ");
subj = input.nextInt();
float[] grades = new float[subj];
do {
System.out.printf("\nEnter Grade [%d]: ", i+1);
grades[i] = input.nextInt();
i++;
}while(i < subj);
}
}
(对此进行了其他一些编辑)
所以,这就是现在一行一行地执行的操作。该方法的前两行只是实例化要在该方法中使用的变量。 i
设置为0,以便更轻松地编辑数组。接下来的两个正在获取您输入的主题数。很标准。下一行是一个设置grades
,它为许多主题创建了一个新的浮点数组。然后,循环运行。在循环中,第一行正在打印,其中i+1
与主题编号而不是数组的索引相对应。此后的行会将输入的分数放在数组中的索引i
处,其后的行递增i
。之后,循环检查将检查i
的索引是否小于主题数。之所以有效,是因为i
从0开始,当它为5时,它只是在列表中插入了第四个元素,即最后一个元素。
注意:数组从0开始,这就是为什么i
实例化为0的原因,以及为什么更改其他检查i
实例的原因。他们正在对此变化进行补偿。