我尝试了很多方法。这是我放弃的那个
double prevClose = 0;
String test = "this is a test test test stop 123 3.5";
Scanner parse = new Scanner(test);
while(parse.hasNext()) {
if(parse.next("stop") == "stop")
prevClose = parse.nextDouble();
}
return prevClose;
答案 0 :(得分:1)
if(parse.next("stop") == "stop")
以上永远不会给你真实。因此,prevClose
始终为0.始终与.equals()
或equalsIgnoreCase()
而不是==
操作员进行字符串比较。
您可以执行以下操作
while(parse.hasNext()) {
if(parse.next().equalsIgnoreCase("stop"))
prevClose = parse.nextDouble();
}
答案 1 :(得分:1)
将字符串与等号进行比较。
在没有参数的情况下移除此next("stop")
来电next()
。
double prevClose = 0;
String test = "this is a test test test stop 123 3.5";
Scanner parse = new Scanner(test);
while(parse.hasNext()) {
if(parse.next().equals("stop"))
prevClose = parse.nextDouble();
}
System.out.println(prevClose);
输出:123.0
答案 2 :(得分:1)
让我们忽略您的代码中的String == String
问题并开始另一个方向......
基本上,你想要的只是stop
之后的所有文字,为此,我们可以使用String#indexOf
和String#substring
的组合
String test = "this is a test test test stop 123 3.5";
test = test.substring(test.indexOf("stop") + "stop".length()).trim();
获得所需的文字后,您只需split
" "
分隔符上的剩余文字,就可以将所有数字放在数组中......
String parts[] = test.split(" ");
for (String part : parts) {
System.out.println(part);
}
哪些输出......
123
3.5
对于String
比较问题,您应该查看How do I compare strings in Java?了解更多详情
答案 3 :(得分:1)
试试这个
double prevClose = 0;
String test = "this is a test test test stop 123 3.5";
String[] split = test.split("stop");
String rightArray = split[1];
String[] numbers = rightArray.split(" ");
for (int i = 1; i < numbers.length; i++) {
prevClose = Double.parseDouble(numbers[i]);
System.out.println(prevClose);
}
输出
123.0
3.5
答案 4 :(得分:0)
不仅在字符串比较中,还有其他问题。
double prevClose = 0;
String test = "this is a test test test stop 123 3.5";
Scanner parse = new Scanner(test);
while (parse.hasNext()) {
if ("stop".equals(parse.next())) { // String comparison and next()
prevClose = parse.nextDouble();
}
}
System.out.println(prevClose);
答案 5 :(得分:0)
更改为
while(parse.hasNext()) {
if(parse.next().equals("stop")) {
prevClose = parse.nextDouble();
}
}
==
和equals
之间的区别 - 由于String类覆盖equals
方法,如果两个String对象包含相同的内容,则返回true,但==
仅返回true两个引用指向同一个对象。
此外Scanner#next()
- 查找并返回此扫描程序中的下一个完整标记。它不接受参数
答案 6 :(得分:0)
double prevClose = 0;
String test = "this is a test test test stop 123 3.5";
String[] test2 = test.split(" ");
int i = 0;
while(test2.length>i) {
String string = test2[i];
try {
prevClose = Double.parseDouble(string);
System.out.println(prevClose);
} catch (NumberFormatException e) {
//System.out.println("this is not number");
//do nothing
}
i++;
}
输出:
123.0
3.5
这适用于任何类型的字符串,与&#34;停止&#34;
无关