2个小时,我和我的朋友一直在尝试做我们的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;
}
}
}
答案 0 :(得分:1)
问题来自你的循环条件,以及你如何增加" 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++;
}
答案 1 :(得分:0)
首先看问题。
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