Java 对于循环和字符问题,尝试确定字符串是否为数字
我想写一个程序是为了检查一个实数,所以我输入“99aa”,它说它是对的,但事实上,它应该是错的。我已经检查了很多次,但仍然无法解决这个问题。谁能给我一些提示吗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
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
}