java - 我的循环不循环

标签 java loops

我觉得这有点奇怪。我的循环不循环,我不知道为什么。没有错误消息。该程序只运行一次。这是我正在创建的一个游戏,它让你扔一个 1-9 的骰子,然后你可以选择从数字 1-9 的列表中删除该数字,或者删除该数字本身。这应该发生,直到棋盘上没有数字为止。但是...循环不循环!!!

public class gudmundur_skilaverkefni9 {
    public static void main (String[] args) {
        System.out.println("Godan dag. Thu ert ad spila Larus.");
        System.out.println("1 2 3 4 5 6 7 8 9");
        int N = 9;
        boolean[] Spilafylki = new boolean[10];

        for (int i = 1; i <= N; i++) {
            System.out.println("Sladu inn slembitolu til ad kasta teningunum.");

            int teningakast = StdIn.readInt();
            int teningatala = (int) (Math.random() * 10);

            System.out.println("Thu fekkst " + teningatala + ".");

            if (teningatala != 2) {
                System.out.println("Viltu taka ut " + teningatala 
                        + " eda velja tvaer tolur sem mynda summu af " 
                        + teningatala + "? (1/2)");

            int tala2 = StdIn.readInt();

            if (tala2 == 2) {
                System.out.println("Slaid inn fyrri tolu:");
                int fyrritala = StdIn.readInt();

                System.out.println("Slaid inn seinni tolu:");
                int seinnitala = StdIn.readInt();

                while (fyrritala+seinnitala != teningatala 
                                            || fyrritala == seinnitala){
                    System.out.println("Thetta gengur ekki! Valdirdu nokkud somu toluna tvisvar? Reyndu aftur:");

                    System.out.println("Slaid inn fyrri tolu:");
                    fyrritala = StdIn.readInt();

                    System.out.println("Slaid inn seinni tolu:");
                    seinnitala = StdIn.readInt();
                }

                System.out.println("Nu litur spilid svona ut:");

                Spilafylki[fyrritala] = true;
                Spilafylki[seinnitala] = true;

                for (i = 1; i <= N; i++) {
                    if (Spilafylki[i] == false)
                        System.out.print(i + " ");
                    else
                        System.out.print(" ");
                }

                System.out.println();
            }

            if (tala2 == 1) {
                Spilafylki[teningatala] = true;

                System.out.println("Nu litur spilid svona ut:");

                for (i = 1; i <= N; i++) {

                    if (Spilafylki[i] == false)
                        System.out.print(i + " ");
                    else
                        System.out.print(" ");
                }

                System.out.println();
            }
        }
        else {
            System.out.println("Thu fekkst tvo. Ekki er hægt ad velja tvaer olikar natturulegar tolur sem mynda 2.");

            System.out.println("Nu litur spilid svona ut:");

            Spilafylki[teningatala] = true;

            for (i = 1; i <= N; i++) {
                if (Spilafylki[i] == false)
                    System.out.print(i + " ");
                else
                    System.out.print(" ");
            }
            System.out.println();

            int count = 0;

            for (i = 1; i <= N; i++)
                if (Spilafylki[i] == true)
                    count++;

             if (count == 9) {
                System.out.println("Allar tolurnar eru farnar. Takk fyrir ad spila Larus.");
                    break;

             }     
         }
    }
}

最佳答案

很简单:在嵌套循环中,您不会重新声明 i 变量,因此使用与外部循环相同的变量。这样,一旦一个嵌套循环结束,i 将等于 N,创建正确的条件使第一个循环在第一个循环之后立即完成循环。

因此,要么通过在嵌套循环中重新声明 i 变量来模糊外部 i

for (int i = 1; ...

int放在i前面会掩盖当前词法范围中的那个。 或者,为了提高可读性,为每个循环使用不同的变量名称。

关于java - 我的循环不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891967/

相关文章:

java - 查找图像的平均颜色

java - java数组上的代码段

java - 如何查找 JVM 尝试加载的类的列表和顺序(而不是已经加载的类)

loops - 带有循环的 Ansible include_tasks 无法检查条件

c++ - 计算数字的总和乘以字符串的长度

java - 使用 Apache PDFBox 库对 PDF 中的数值进行右对齐

java - 从 Redis 获取 key

loops - Karate - 如何在循环中调用函数?

arrays - 如何改进算法来检查数组中是否有一个元素等于数组中任何其他两个元素之间的差值?

c++ - 坐标不对,添加不正确