Java 13环整除性
两个小时以来,我和我的朋友一直在努力做Java作业,但我们被卡住了。基本上,输入一个数字n,程序应该显示前n个不可分的数字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
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个不可分割的,而不是可分割的,谢谢!你帮了我们很多忙@不客气。如果它解决了你的问题,请验证我的答案,谢谢。