字符串变量result
具有以下字符串:
All Prime Numbers Up To {10}:
1 2 3 4 5 6 7 8 9
当我使用此代码扫描每个数字标记并返回其长度时:
Scanner scan = new Scanner(result);
while (scan.hasNext()) {
String num = scan.next();
if (num.matches(".*\\d.*")) {
System.out.print("number: ");
System.out.println(num);
System.out.print("The length: ");
System.out.println(num.length());
System.out.println("----");
}
}
结果显示如下:
Please Enter a Number: 9
number: {9}:
The length: 4
----
number: 1
The length: 1
----
number: 2
The length: 10
----
number: 3
The length: 10
----
number: 4
The length: 1
----
number: 5
The length: 10
----
number: 6
The length: 1
----
number: 7
The length: 10
----
number: 8
The length: 1
----
number: 9
The length: 1
----
为什么不打印每个数字标记的正确长度?即使它正确打印!
答案 0 :(得分:1)
如何初始化变量结果?
String result = "All Prime Numbers Up To {10}:\n1 2 3 4 5 6 7 8 9";
使用上面的init我得到所有数字1-9的正确长度1。我会用这样的东西:
String result = "All Prime Numbers Up To {10}:\n1 2 3 4 5 6 7 8 9";
Scanner scan = new Scanner(result);
while (scan.hasNext()) {
if (scan.hasNextInt()) {
Integer num = scan.nextInt();
System.out.println("number: "+num);
System.out.println("The length: "+num.toString().length());
System.out.println("----");
}
else {
scan.next();
}
}
scan.close();
答案 1 :(得分:0)
我想出了@KickButtowski的原因。 问题在于我的正则表达式。
我必须将其更改为以下内容:"[0-9]+"
然后它才有效!
即使我以前的代码没有错,这个正则表达式解决了我在代码中遇到的另一个问题。如果我使用了正则表达式".*\\d.*"
,它将返回与字符混合的数字,而我不希望这样。