簡體   English   中英

如何檢查包含數字和字母的字符串是否在 Java 中的兩個值之間?

[英]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 的更多信息:

  1. https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
  2. https://docs.oracle.com/javase/tutorial/essential/regex/

你可以試試這個簡單明了的代碼

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM