如果 String 变量包含数字,我想打印一条错误消息

I want to print a error message if a String variable contains numbers

我正在做一个练习,我需要接受字符串变量中的数字并将它们除以 10,并且我不允许使用 .nextInt();或 Integer.ParseInt();如果 String 变量包含字母,我想打印出一条错误消息。现在,如果我只在字符串变量中输入字母,错误消息就会起作用,但如果我将它与字母和数字混合,错误消息就不起作用。我该怎么做才能解决这个问题。

到目前为止的代码:

导入java.util.regex.*;

导入java.util.Scanner;

public class 练习 8 {

private static Scanner input;

public static void main(String[] args) {

    System.out.println("Enter some numbers");
    
    input = new Scanner(System.in);
    double divide = 10;
    int sum = 0;
    int x = 0;
    int j = 0;
    
    while (x < 1) {
        
        String strNumbers = input.next();
        
        if (!Pattern.matches("[a-zA-Z]+", strNumbers)) {
            
            ++x;

            for (int i = strNumbers.length() - 1; i >= 0; i--) {
                
                sum += Math.pow(10, j) * (strNumbers.charAt(i) - '0');
                j++;    
            }   
            
            System.out.println("Your numbers: " + sum);
            System.out.println("Your numbers divided by 10: " + sum/divide);
        }
        
        else {
            
            System.out.println("Invalid");
        }
    }
}

}

您可以反转 if 语句并检查 strNumbers 变量是否仅包含数字。

if (Pattern.matches("\d+", strNumbers)) {
    //handle case where number is valid ...
}
else {
    System.out.println("Invalid");
}