gpt4 book ai didi

java - 为什么我的扫描仪会重复?

转载 作者:行者123 更新时间:2023-11-30 03:36:46 27 4
gpt4 key购买 nike

我正在尝试制作一个 GPA 计算器,但在代码的早期我就开始遇到问题;这是代码段:

    Scanner input = new Scanner(System.in);

System.out.println("How many grades are you putting? ");
int length = input.nextInt();

String[] gradesArray = new String[length];

for(int i = 0; i < gradesArray.length; i++)
{
System.out.println("Enter grade (include + or -) ");
gradesArray[i] = input.nextLine();
}

一切都很顺利,直到“输入成绩(包括+或-)”部分,它重复两次,所以当我编译并到达该部分时,它会说“输入成绩(包括+或-)输入成绩(包括+或 -) "在我可以输入任何内容之前。如何解决这个重复出现的问题?因为我认为它也占据了一年级的位置。

最佳答案

您可以通过添加来解决此问题

input.nextLine();

之后

int length = input.nextInt();

这将确保在尝试读取更多输入之前消耗包含该整数的行的末尾。

Scanner input = new Scanner(System.in);

System.out.println("How many grades are you putting? ");
int length = input.nextInt();
input.nextLine();

String[] gradesArray = new String[length];

for(int i = 0; i < gradesArray.length; i++)
{
System.out.println("Enter grade (include + or -) ");
gradesArray[i] = input.nextLine();
}

进一步说明:

调用input.nextInt()尝试从标准输入读取单个标记并将其转换为int。输入该整数并按 Enter 键后,输入流仍包含行尾字符,而 input.nextInt() 尚未读取该字符。因此,第一次调用 input.nextLine() 时,它会读取这些字符,然后丢弃它们(因为 input.nextLine() 会去除换行符),然后结束得到一个空字符串。该空字符串被分配给gradesArray[0],并且循环立即进行到下一次迭代。在循环之前添加 input.nextLine() 可以解决问题。

关于java - 为什么我的扫描仪会重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com