检查字符串是否只包含 2 个数字,在 Java 中用 1 个逗号分隔

Check if String contain only 2 numbers separated by 1 comma in Java

我需要验证输入的行。但是每行只能包含 2 个数字,用 1 个逗号分隔。格式示例:

1,4

2,7

8,9

此外,第一个数字必须低于某个最大值(我的程序通过 id.size() 方法检查可能的最大值,它给出了列表的大小,并且必须是可能的最大值字符串的第一个数字)。

第二个数字可以是任何值。

使用它来获取两个数字(s 是输入字符串):

int first=Integer.parseInt(s.split(",")[0].trim().replace("(", ""));
int second=Integer.parseInt(s.split(",")[1].trim().replace(")", ""));

这将为您获取号码并删除 ()。您应该为您输入的每一行使用它。 要检查输入是否有更多数字,请使用:

if(s.split(",").length>2){
    //show some error
}

之后你只需要检查数字的最小值和最大值。

首先,你要检查你的行是否包含2个数字和一个逗号,然后你必须检查逗号组成的两个子串是否是数字。所以你想要的代码如下。

public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter String: ");
    String line = br.readLine();
    System.out.println(line);

    int max_number = 100;
    int firstNumber = 0, secondNumber = 0;
    if (line.contains(",")) {
        if(isNumeric(line.substring(0,line.indexOf(","))) && isNumeric(line.substring(line.indexOf(",")+1))){
            firstNumber = Integer.parseInt(line.substring(0,line.indexOf(",")));
            secondNumber = Integer.parseInt(line.substring(line.indexOf(",")+1));
        }

    }

    if(firstNumber <= max_number){
        System.out.println("FirstNumber: " + firstNumber + " SecondNumber: " + secondNumber);
    }

}

public static boolean isNumeric(String str) {
    if (str == null) {
        return false;
    }
    try {
        double d = Double.parseDouble(str);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

如果您只使用整数,则可以使用正则表达式来验证是否有两个用逗号分隔的数字。

if(str.matches("-?[0-9]+,-?[0-9]+")){
 //valid
} else {
 //invalid
}

之后,您可以使用 String#splitInteger.parseInt 来获得这两个数字。

final String[] parts = str.split(",");
final int num1 = Integer.parseInt(parts[0]);
final int num2 = Integer.parseInt(parts[1]);
if(num1 < MAX_VALUE_FOR_FIRST_NUM){
   //valid
} else {
  //invalid; display error message
}

您可以使用正则表达式提取这两个数字,然后检查数字的最大条件。

String regex = "^(-?\d+),(-?\d+)$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input); // input as 1,4

if (matcher.find()) {
    int num1 = matcher.group(1));
    int num2 = matcher.group(2));
    
    if (num1 == id.size()) {
        // some logic
    }
    
    // some more logic
}