java - Java 中 while 和 for 的组合

标签 java multithreading for-loop while-loop

所以,我刚刚解决了一个问题,但我想知道为什么我的方法之一无法正常工作。

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/

相关文章:

c++ - 为什么即使没有内存重新分配,在 for 循环中调用 push_back 也是不安全的?

java - JSF 的托管 bean 中的 getter 和 setter 都是强制性的吗?

java - 匿名数组索引而不是 switch 语句?

java - ActionListener 失败 - Java For-Each 分配给 JMenuItem

java - 在 Android 上的单独线程上获取 GL10 实例

java - "Synchronized"后面发生了什么?

c - 为什么我的代码会在此时停止?

java - Tika 无法删除临时文件

java - 使用 Java 泛型的责任链处理程序

java - Lucene 锁定异常