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

Java 使用一个扫描仪在运行时显示可以同时保存和接受输入的多行,java,java.util.scanner,Java,Java.util.scanner,我正在使用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

我正在使用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();

   } 
}
新手不是借口,所以我做了一项研究,但大多数都是单向的

我想在运行时显示可以同时保存和接受输入的多行,就像将行转换为可以在运行时编辑或更改的字段一样

编辑[1]:IDE是NetBeans 8.2


编辑[2]:我已经有了一个这方面的工作程序(这是一种方式),我刚想到它,我有点想升级它。

问题不是它跳过读取,而是它在循环期间没有读取。如果希望每次循环运行时都从输入读取数据,则需要将下一个放入循环中。最重要的是,如果您只有一个包含等级的浮点数,则每当收到新等级时,该变量将被重写。这可以通过添加一个浮点数组来代替标准浮点来解决。代码如下所示:

公共类程序{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int subc,i=0;
System.out.printf(“输入多少主题:”);
sub=input.nextInt();
浮动[]等级=新浮动[subc];
做{
System.out.printf(“\n输入级[%d]:”,i+1);
等级[i]=input.nextInt();
i++;
}而(i
(对此进行了一些其他编辑)

这就是它现在所做的,一行一行。方法的前两行只是实例化要在方法中使用的变量
i
设置为0,以便于编辑阵列。接下来的两个是获取您输入的主题数。相当标准。下一行是设置
grades
的一行,它为多个主题创建一个新的浮动数组。然后,循环运行。在循环中,第一行是打印,
i+1
与主题编号而不是数组的索引相对应。之后的一行将把输入的成绩放入数组中,索引为
i
,之后的一行递增
i
。之后,循环检查检查
i
的索引是否小于受试者数量。这是可行的,因为
i
从0开始,当它是5时,它只是在列表中插入了第4个元素,这是最后一个元素


注意:数组从0开始,这就是为什么
i
被实例化为0,以及检查
i
的其他实例被更改的原因。他们正在补偿这一变化。

您找不到解决方案的原因是因为没有,至少没有一个使用标准扫描仪。您可能可以使用第三方扫描仪或GUI库(如Swing或更新的JavaFX)来解决这个问题。创建TUI()的“标准”方法是使用一个名为:Yep的库,@ElliottFrisch提供了一个关于其中一个第三方控制台库的链接,该库可以很好地为您工作。感谢你们两位。你真的希望能够返回并编辑以前的条目,还是只想获取每个科目的分数?如果你想编辑条目,你需要一个TUI,并且提供了一些很好的链接。如果只想获取每个科目的分数,则需要将
input.nextInt()
放入do/while循环中,并将输入存储在数组中。
    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