[英]How to check if a string containing a number and a letter is in between two values in Java?
我正在為數據驗證和測試數據編寫代碼,它具有具有某些限制的階段,並且只有在用戶滿足限制時才會進入下一個階段。 對於其中之一,用戶必須輸入 5 到 500 之間的數字。
例如:
如果輸入為 155,則進入下一階段
如果輸入為-12,則循環並停留在此階段
我想這樣做,如果用戶輸入像“65A”這樣的字符串,它會繼續前進,因為 65 在 5 和 500 之間。我如何 go 關於制作條件語句?
如果您只想從輸入中刪除所有非數字,應該像
const lowerBound = 5;
const upperBound = 500;
String str = "65A";
int number = Integer.parseInt(str.replaceAll("[^\\d]", ""));
System.out.println(number);
if (number >= lowerBound && number <= upperBound) {
// all good
} else {
// no good
}
使用正則表達式^[-]?\\d+
從輸入的開頭檢索 integer。 請注意[-]?
在正則表達式中,使-
可選。
執行以下操作:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
String input;
Pattern pattern = Pattern.compile("^[-]?\\d+");
boolean valid;
int num;
do {
valid = true;
System.out.print("Enter a number: ");
input = kb.nextLine();
// Process the input only if it starts with an int
if (input.matches("[-]?\\d+.*")) {
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
try {
num = Integer.parseInt(matcher.group());
if (num < 5 || num > 500) {
System.out.println("Error: valid range is from 5 to 500. Please try again.");
valid = false;
throw new IllegalArgumentException();
}
System.out.println("Number is: " + num);
} catch (IllegalArgumentException e) {
if (valid) {
System.out.println("Error: invalid input. Please try again.");
valid = false;
}
}
}
} else {
System.out.println("Error: invalid input. Please try again.");
valid = false;
}
} while (!valid);
}
}
示例運行:
Enter a number: 65a
Number is: 65
另一個示例運行:
Enter a number: 5
Number is: 5
另一個示例運行:
Enter a number: a
Error: invalid input. Please try again.
Enter a number: 65a
Number is: 65
另一個示例運行:
Enter a number: a65
Error: invalid input. Please try again.
Enter a number: 65a
Number is: 65
另一個示例運行:
Enter a number: -65a
Error: valid range is from 5 to 500. Please try again.
Enter a number: 65a
Number is: 65
另一個示例運行:
Enter a number: 600
Error: valid range is from 5 to 500. Please try again.
Enter a number: 65a
Number is: 65
檢查以下鏈接以了解有關 Java 正則表達式 API 的更多信息:
你可以試試這個簡單明了的代碼
String sampleString = "65a";
String numberOnly=sampleString .replaceAll("[^0-9]", "");
if(numberOnly > 5 && numberOnly < 500){
System.out.println("Welcome to the next stage");
}
else{
System.out.println("Try again");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.