gpt4 book ai didi

java - 为什么我的 try and catch 卡在了一个循环中?

转载 作者:行者123 更新时间:2023-11-29 03:24:40 26 4
gpt4 key购买 nike

我希望用户将整数输入数组。我有一个我写的循环,其中有一个 try 和 catch,以防用户插入一个非整数。如果为真,则有一个 boolean 变量使循环继续进行。这样用户会被提示并再次提示。

除了,当我运行它时,它会陷入循环,在循环中重复“请输入 #”和“需要一个整数”,而不让用户输入新数字。如果捕获到异常,我会重置该数字。我不明白。

import java.util.*;
public class herp
{
//The main accesses the methods and uses them.
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Hello and welcome!\n");
System.out.print("This program stores values into an array"+" and prints them.\n");
System.out.println("Please enter how many numbers would like to store:\n");
int arraysize = scan.nextInt();

int[] mainarray = new int[arraysize+1];
int checkint = 0;
boolean notint = true;
int prompt = 1;

while (prompt < mainarray.length)
{
// Not into will turn true and keep the loop going if the user puts in a
// non integer. But why is it not asking the user to put it a new checkint?
while(notint)
{
try
{
notint = false;
System.out.println("Please enter #"+ prompt);
checkint = scan.nextInt();
}
catch(Exception ex)
{
System.out.println("An integer is required." +
"\n Input an integer please");
notint = true;
checkint = 1;
//See, here it returns true and checkint is reset.
}
}
mainarray[prompt] = checkint;
System.out.println("Number has been added\n");
prompt++;
notint = true;
}
}
}

最佳答案

一旦扫描器抛出 InputMismatchException,它就不能继续使用。如果您的输入不可靠,请不要使用 scanner.nextInt() 使用 scanner.next() 获取 String 然后转换字符串到一个整数。

替换:

checkint = scan.nextInt();

与:

String s = scan.next();
checkint = Integer.parseInt(s);

关于java - 为什么我的 try and catch 卡在了一个循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651336/

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