所以,我刚刚解决了一个问题,但我想知道为什么我的方法之一无法正常工作。
import java.util.*;
import java.util.Arrays;
class scanClass extends Thread {
public compareClass cc;
private String name;
final int MaxCards = 10;
double d;
double[] Player1Array = new double[MaxCards];
double[] Player2Array = new double[MaxCards];
String Player1Cards = " 23 fj 24 dkk 9 djjj 12 34 5 4 323 5 12 998 34 2 djj 30 djj 39 dsds 23 ";
String Player2Cards = " mdk 93 fjf 38 89 1 fjdj 49 20 fjfj 48 jd 299 jd 3 dk 39 dk 394 1 3";
scanClass(compareClass compareclass,String s){
cc = compareclass;
name = s;
}
public void scan1(){
Scanner scan = new Scanner(Player1Cards);
for(int i=0;i<Player1Array.length && scan.hasNext();i++){
if(!scan.hasNextDouble()) scan.next();
d = scan.nextDouble();
Player1Array[i]=d;
}
scan.close();
System.out.println(Arrays.toString(Player1Array));
}
public void scan2(){
Scanner scan = new Scanner(Player2Cards);
for(int i=0;i<Player2Array.length;i++){
while(scan.hasNext()) {
if(!scan.hasNextDouble())
scan.next();
double d = scan.nextDouble();
Player2Array[i]=d;
}
}
scan.close();
System.out.println(Arrays.toString(Player2Array));
}
public void run(){
if(name.equals("Player1")) scan1();
if(name.equals("Player2")) scan2();
}
}
嗯,方法 scan1() 确实工作正常,但 scan2() 只扫描一个 double ,并且由于某种原因它是扫描字符串中的最后一个。
亲爱的 friend 们,感谢您的帮助!
最佳答案
你必须打破 while 循环。
for (int i = 0; i < Player2Array.length; i++) {
while (scan.hasNext()) {
if (!scan.hasNextDouble()) {
scan.next();
}
double d = scan.nextDouble();
Player2Array[i] = d;
break; // break the loop
}
}
否则,您将永远不会再次到达外循环,并且无法填充数组。
关于java - Java 中 while 和 for 的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666629/