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