java 在运行时使用一个扫描仪显示多行,这些行可以同时保存和接受输入

ymdaylpp  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(97)

我正在使用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]:我已经有一个工作程序(这是一种方式),它只是来到我的脑海,我有点想升级它。

nr9pn0ug

nr9pn0ug1#

问题不是它跳过了读,而是它在循环过程中没有阅读。如果你想在每次循环运行时从输入读取,你需要把下一个输入放到循环内部。最重要的是,如果您只有一个包含分数的浮点数,那么每当收到新的分数时,该变量将被覆盖。这可以通过添加一个浮点数数组来代替标准浮点数来解决。代码看起来像这样:

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时,它只是插入列表中的第4个元素,也就是最后一个元素。

**注意:**Arrays从0开始,所以i的示例化位置为0,其他检查i的示例也会发生变化。他们正在弥补这种变化。

bzzcjhmw

bzzcjhmw2#

do {
     System.out.printf("\nEnter Grade [%d]: ", i);
     i++;
   }while(i <= subj);

您不会扫描循环内的任何输入。你只显示一个文本并递增i
当你最终要求输入 * 在循环外 * 时,你已经打印了所有要求用户输入成绩的行,i的值已经超过了科目的数量。

相关问题