gpt4 book ai didi

java - 输入错误。即使在接受新输入后仍然使用旧输入

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:28 26 4
gpt4 key购买 nike

我必须编写代码以使用户无法输入错误的值。

    public static String getFraction() {
Scanner s = new Scanner(System.in);
String fraction = s.next();
if (validFraction(fraction)){
return fraction;
}
else {
System.out.print("Invalid fraction. Please enter a
fraction (a/b) or integer (a), where a and b are
integers and b is not zero : ");
getFraction();
}

这里,当用户输入错误的值时,它会提示用户输入新值,但仍然采用旧值。

        return null;
}

例如,如果我输入 a/b,它会提示我再次输入,但由于我稍后在代码中使用了 parseInt 方法,它会显示一个错误,如下所示:

Exception in thread "main" java.lang.NumberFormatException: For 
input string: "a"
at java.base/java.lang.NumberFormatException.forInputString(Num
berFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at FractionCalculator.numerator(FractionCalculator.java:105)
at FractionCalculator.main(FractionCalculator.java:15)

有效分数函数:

public static boolean validFraction(String f) {
if (f.contains("/")) {
int n = f.indexOf("/");
String num = f.substring(0, n);
String den = f.substring(n+1);
for (int i = 1; i<n; i++) {
char a = num.charAt(i);
char b = den.charAt(i);
if (a == '-' || b == '-') {
return false;
}
}
f.replaceAll("[-]", "");
if (isNumber(num, den)) {
if (den.equals("0"))
return false;
else
return true;
}
}
else {
if (f.matches("^[0-9]+$"))
return true;
}
return false;
}

最佳答案

异常似乎来自字符串(a,b)被解析为整数的地方。

如果您打算实际执行此操作并检查字符串是否为数字,那么建议捕获 NumberFormatException 并相应地返回状态,如下所示:

      private static boolean isNumber(String string)
{
try
{
Integer.parseInt(string);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}

关于java - 输入错误。即使在接受新输入后仍然使用旧输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418924/

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