Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于循环和字符问题,尝试确定字符串是否为数字_Java_String - Fatal编程技术网

Java 对于循环和字符问题,尝试确定字符串是否为数字

Java 对于循环和字符问题,尝试确定字符串是否为数字,java,string,Java,String,我想写一个程序是为了检查一个实数,所以我输入“99aa”,它说它是对的,但事实上,它应该是错的。我已经检查了很多次,但仍然无法解决这个问题。谁能给我一些提示吗 public class jj { public static void main( String[] args ) { String num; // Create a Scanner object for console input Scanner input = new Sc

我想写一个程序是为了检查一个实数,所以我输入“99aa”,它说它是对的,但事实上,它应该是错的。我已经检查了很多次,但仍然无法解决这个问题。谁能给我一些提示吗

public class jj {
    public static void main( String[] args ) {

        String num;

        // Create a Scanner object for console input
        Scanner input = new Scanner(System.in);

        System.out.print("Enter the number: ");
        num = new String( input.nextLine() );

        for ( int i=0; i<=num.length(); i++ ) {
        int j = num.charAt(i);

            if (j>57 || j<42 || j==44 || j==47 ) {
            System.out.print("This is not a real number.");
            break;
            } else 

            System.out.print("This is a real number.");
            break;
        }
    }
}
公共类jj{
公共静态void main(字符串[]args){
字符串数;
//为控制台输入创建扫描仪对象
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入号码:”);
num=新字符串(input.nextLine());
对于(inti=0;i57 | | j而言,您的逻辑是错误的

试试这个

if ((j >= 48 && j <= 57) || j==44 || j==47 ) {

}
如果((j>=48&&j您的逻辑错误

试试这个

if ((j >= 48 && j <= 57) || j==44 || j==47 ) {

}

如果((j>=48&&j您可以从字符的角度考虑这一点,并实现以下功能:

if (Character.isDigit(num.charAt(i))) {
//do something
}

您可以从字符的角度考虑这一点,并实现以下功能:

if (Character.isDigit(num.charAt(i))) {
//do something
}
试试看

试试看


我评论了你的逻辑有什么问题,但不要重新发明轮子

org.apache.commons.lang.math.numberrutils
使用:

检查字符串是否为有效的Java数字。 有效数字包括用0x限定符标记的十六进制数字、科学记数法和用类型限定符标记的数字(例如123L)

或者,如果要检查字符串中是否只有数字,可以使用
:

检查字符串是否仅包含数字字符


我评论了你的逻辑有什么问题,但不要重新发明轮子

org.apache.commons.lang.math.numberrutils
使用:

检查字符串是否为有效的Java数字。 有效数字包括用0x限定符标记的十六进制数字、科学记数法和用类型限定符标记的数字(例如123L)

或者,如果要检查字符串中是否只有数字,可以使用
:

检查字符串是否仅包含数字字符


我只想指出一些逻辑上的问题,这些问题让你感到困惑:

if (j>57 || j<42 || j==44 || j==47 ) {
    System.out.print("This is not a real number.");
    break;
    } else 
        System.out.print("This is a real number.");
    break;
}
在检查字符串中的每个字符之前,我们无法确定
num
是否为有效的数字



请务必检查@ZouZou的答案,因为这才是您真正应该做的。

我只想指出一些让您感到不适的逻辑问题:

if (j>57 || j<42 || j==44 || j==47 ) {
    System.out.print("This is not a real number.");
    break;
    } else 
        System.out.print("This is a real number.");
    break;
}
在检查字符串中的每个字符之前,我们无法确定
num
是否为有效的数字



请务必检查@ZouZou的答案,因为这才是你真正应该做的。

你知道你会在第一次迭代时中断for循环吗?如果你的输入是99aa,你会检查9是一个数字,打印它是一个数字并中断你的循环。事实上,每一个以数字开头的输入都会打印有效的数字。可能是duplica你的括号中有一个是错误的。你的for循环在一次迭代后终止,不管你考虑的是什么
负值
实数?我投票暂停,因为涉及缺少括号的问题可能不会引起未来读者的广泛兴趣。然而,下面有很多答案。你知道吗是否会在第一次迭代时中断for循环?如果输入99aa,您将检查9是否为数字,打印其数字并中断循环。事实上,每个以数字开头的输入都将打印有效数字。括号的可能重复项是错误的。您的for循环在一次迭代后终止,无论您考虑的是什么
ne实数的gative值
?我投票暂停,因为涉及缺少括号的问题可能不会引起未来读者的广泛兴趣。然而,下面有很多答案。第三个侧注:for循环应该是
for(int I=0;I第三个侧注:for循环应该是
for(int I=0;I)
boolean numberFlag = true;
for ( int i=0; i<=num.length(); i++ ) {
    int j = num.charAt(i);

    if ((j >= 48 && j <= 57) || j==44 || j==47 ) {
        numberFlag = false;
        break;
    }
}

if(numberFlag) {
    // logic when a valid number is checked
} else {
    // logic when an invalid number is checked
}