gpt4 book ai didi

java - 我的输入和 if-else 语句有问题,

转载 作者:行者123 更新时间:2023-12-01 17:09:24 26 4
gpt4 key购买 nike

我正在尝试打印一个 ISBN 编号,用户输入 10 个数字,程序将检查以下条件是否正确:输入仅为数字,输入长度为 10 个字母。就是这样。

问题:无论如何,“if”语句都不会运行。即使我的输入是“1234567899”<= 10 个字母。到目前为止,我还看不出问题出在哪里。

我可能犯了一个非常愚蠢的错误......:(

编辑:我不知道为什么,但我似乎无法在 if 语句中访问 ary[0]、ary[1] 等。我收到“java.lang.ArrayIndexOutOfBoundsException:1”错误消息。我访问错误吗?

我发现, String[] ary = svar.split("");未按预期工作。 ary 只有一个元素,即整个该死的输入。我想分割输入中的每个字符并将输入中的每个整数存储到数组 ary 中的单个元素中,这就是我收到此错误的原因。

import java.util.*;
class isIntegerclass{
public static boolean isValid(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false; }
return true;
}
}

class ISBNcheck {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter input: "); //ask for input
String svar = input.nextLine(); // read input

if (isIntegerclass.isValid(svar) && svar.length() == 9) {
String[] ary = svar.split(" ");//put the numbers in string 'svar' into array called ary.
System.out.println("True: ");

// accessing elements in array
System.out.println(" " + ary[0] + " - " + ary[1] + " " + ary[2] + " " + ary[3] + " - " + ary[4] + " " + ary[5] + " " + ary[6] + " " + ary[7] + " " + ary[8] + " - " + ary[9]); //print
} else {
System.out.println("This is not the right input...");
System.out.println("The number must be 10 letters(numbers only) long. No need for dashes in between.");
System.out.println("[] - [][][] - [][][][][] - []");
}
}
}

最佳答案

请不要依赖正常程序流程的异常,它们应该用于异常情况。

为什么不使用这个呢?

private static boolean isValidISBN(String s) {
return s.matches("^[0-9]{10}$");
}

编辑:也许我需要解释一下。 “^[0-9]{10}$”regular expression^ 代表字符串的开头,$ 代表字符串的结尾。 [0-9] 表示任意数字,{10} 表示位数。

关于java - 我的输入和 if-else 语句有问题,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24331914/

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