Java 检查字符串中是否有数字

Java 检查字符串中是否有数字,java,Java,我试图检查String中是否有任何数字,如果其中没有数字-打印“true”,否则(有数字)打印“false”。 我的代码是: package strings; import java.util.Scanner; public class P58Targil3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); boolean sw1 = tru

我试图检查
String
中是否有任何数字,如果其中没有数字-打印“true”,否则(有数字)打印“false”。 我的代码是:

package strings;

import java.util.Scanner;

public class P58Targil3 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        boolean sw1 = true;
        String st1 = in.next();
        for (int i = 0; i < st1.length(); i++) {
            if (st1.charAt(i) >= '0' && st1.charAt(i) <= 9)
                sw1=false;
        }
        System.out.println(sw1);
    }

}
包字符串;
导入java.util.Scanner;
公共类P58Targil3{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
布尔值sw1=true;
字符串st1=in.next();
for(int i=0;i如果(st1.charAt(i)>='0'&&st1.charAt(i)检查字符串是否包含数字的一种非常简单的方法是从字符串中删除所有数字,然后检查生成的字符串是否仍然具有相同的长度

String str = "Hello123!";
System.out.println(str.length() != str.replaceAll("[0-9]", "").length());
其工作原理是将字符串中的所有数字0-9替换为零(空字符串),然后将其与原始数字进行比较。如果长度不同,您知道数字已被删除,因此必须先有数字

要回答您的问题,您当前正在检查索引i处的字符值是否大于字符值“0”或小于或等于整数9。数字(0-9)在ASCII编码系统中,用值48-57表示字符,其中48为0,9为57。因此,如果要比较字符值,可以使用以下条件:

if (st1.charAt(i) >= 48 && st1.charAt(i) <= 57) sw1 = false;

if(st1.charAt(i)>=48&&st1.charAt(i)='0'&&st1.charAt(i)=48&&st1.charAt(i)定义“不起作用”。哦,9也应该是
'9'
。尝试将单引号添加到9。不要删除0周围的引号。在9周围添加引号。@Shloim哦,没有注意到我忘了它们:(我添加了,它现在正在工作,如果相反,我做了相反的操作并删除了“0”中的引号,它也不会修复它?@grampage为什么,它会将其更改为false如果其中任何一个都是数字,它将在for语句中,直到字符串的长度。有很多方法可以做到这一点,但这并不能回答以下问题:更正OP的代码。您可以在以后添加变体,但这是一个注释。回答不错,我还没有学习replaceAll或数组,所以我将保持这种方式:)thx.@DAVIDBALAS1我还添加了一个关于您以前代码的详细解释。它试图准确地解释单引号数字的含义,以及为什么您可以使用这些数字来比较字符。
if (st1.charAt(i) >= '0' && st1.charAt(i) <= '9') sw1 = false;
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner in = new Scanner(System.in);
    boolean sw1 = false;
    String st1 = in.next();
    for (int i = 0; i < st1.length(); i++) {
        if (st1.charAt(i) >= 48 && st1.charAt(i) <= 57) sw1 = true;
    }
    System.out.println(sw1);
}