Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 13环整除性_Java_Loops_If Statement_While Loop - Fatal编程技术网

Java 13环整除性

Java 13环整除性,java,loops,if-statement,while-loop,Java,Loops,If Statement,While Loop,两个小时以来,我和我的朋友一直在努力做Java作业,但我们被卡住了。基本上,输入一个数字n,程序应该显示前n个不可分的数字13。忽略其余的代码,因为整个家庭作业是一个程序。这是代码的最后一部分 import java.util.Scanner; public class Loop { public static void main (String[]args) { Scanner in = new Scanner(System.in); int eing

两个小时以来,我和我的朋友一直在努力做Java作业,但我们被卡住了。基本上,输入一个数字n,程序应该显示前n个不可分的数字13。忽略其余的代码,因为整个家庭作业是一个程序。这是代码的最后一部分

import java.util.Scanner;

public class Loop {
    public static void main (String[]args) {
        Scanner in = new Scanner(System.in);
        int eingabe,quadrat;
        int i = 0; //ungerade Zahl Zähler
        int i2 = 0; //Quadratzahler Zähler
        int i3 = 0; //Quadratzahl inkrementierer
        int i4 = 0;
        int i5 = 0;
        int zahl = 1;
        int zahl2 = 1;
        int zahl3 = 1;
        System.out.println("Geben Sie eine Zahl ein");
        eingabe = in.nextInt();

        System.out.println("Das sind die ungeraden Zahlen");

        while (eingabe >i) {
            if (zahl%2 !=0) {
                System.out.print(zahl + " ");
                i++;
            }
            zahl = zahl + i;            
        }

        System.out.println("\nDas sind die Quadratzahlen");
        while (eingabe>i2) {
            quadrat = zahl2 * zahl2;
            if (quadrat%2==0){
                System.out.print(quadrat +" ");
                i2++;
            } else {
                i3++; /*Dieser Zähler ist nur dafür da damit die Zahl mit der gerechnet wird
                        immer um 1 erhöht wird. Ansonsten wäre es eine Dauerschleife weil 1*1 =1 und i2 würde sich nie inkrementieren
                      */
                zahl2 = zahl2 + i3;
            }
            zahl2 = zahl2 + i2;
        }       

        System.out.println("\nDas sind die durch 13 teilbaren zahlen");

        /////THIS IS THE PART ABOUT THE QUESTION        
        while (eingabe >i4) {
            if (zahl3%13 ==0) {
                System.out.print(zahl3 + " ");
                i4++;
            } else {
                System.out.println("wrong");
                zahl3 = zahl3 + i4;
            }
            zahl3 = zahl3 + i4;             
        }
    }
}

这个问题来自于你的循环条件,以及你如何增加zahl3,你应该只在每次循环后增加zahl3 1。 如果您想查看代码的实际功能,可以在每个循环的入口打印zahl3的值,这样您就可以看到没有检查所有的数字

while (eingabe >i4) {
        if (zahl3%13 ==0) {
        System.out.print(zahl3 + " ");
        i4++;
        } else {
            System.out.println("wrong");
            zahl3 = zahl3 + i4; // <== Delete this line 
        }
        zahl3 = zahl3 + i4; // <== change this one to zahl3++;
    }

首先看问题

   while (eingabe >i4) // infinite loop as i4 is changing only in if condition.
 //It should have a condition where it can break
     {
                    if (zahl3%13 ==0) {
                        System.out.print(zahl3 + " ");
                        i4++;
                    } else {
                        System.out.println("wrong");
                        zahl3 = zahl3 + i4; // already incremented at end. Not required 
                    }
                    zahl3 = zahl3 + i4; // you making it double of its value            
                }
可能的解决办法

    while (eingabe >= zahl3) // A condition where it can break
 {
                if (zahl3%13 ==0) {
                    System.out.println(zahl3 + " correct ");

                } else {
                    System.out.print(zahl3 + " ");
                    System.out.println("wrong");
                  //  zahl3 = zahl3 + i4;
                }

                zahl3++;    // increment it by one     

            }
输出:如果eingabe为15

1 wrong
2 wrong
3 wrong
4 wrong
5 wrong
6 wrong
7 wrong
8 wrong
9 wrong
10 wrong
11 wrong
12 wrong
13 correct 
14 wrong
15 wrong

非常糟糕的变量命名方式,当你发布一些东西时,请保持变量名在一般情况下是合理的。前n个数字被13整除是1*13,2*13,3*13,…,n*13。我建议使用这种格式的问题解释:解释预期输出和获得的输出忽略其余代码。。。难道你不能删掉不相关的代码,而不是全部发布吗?@AndyTurner他们首先需要n个不可分割的,而不是可分割的,谢谢!你帮了我们很多忙@不客气。如果它解决了你的问题,请验证我的答案,谢谢。