检查字符串是否只包含 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#split
和 Integer.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
}
我需要验证输入的行。但是每行只能包含 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#split
和 Integer.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
}