我得到了这个作为家庭作业,但我坚持理解我的代码的错误行为。
任务如下:编写一个程序,打印出序列 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ...(该数字重复多次,直到等于)的一部分。程序的输入是一个正整数 n:程序应该打印的序列元素的数量。输出以空格分隔的单行数字序列。
例如,如果 n = 7,那么程序应该输出 1 2 2 3 3 3 4。
样本输入 1:
7
示例输出 1:
这是我的代码(底部输出:
import java.util.Scanner;
class Test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter: );
int totalNum = scanner.nextInt();
int counter = 0;
for(int i = 1; i <= totalNum; i++){
for(int j = 1; j <= i; j++){
counter++;
System.out.println(" " + i);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出(输入为 4):
全部在新线路上,不在同一条线路上
4
1
2
2
3
3
3
4
4
4
4
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么我的输出和所需的输出不同吗?:)
您需要在程序中进行两项更正:
System.out.println("Enter: ); boolean shouldBreak = false;
for(int i = 1; i <= totalNum; i++){
for(int j = 1; j <= i; j++){
if(counter == totalNum){
shouldBreak = true;
break;
}
counter++;
System.out.print(i + " ");
}
if(shouldBreak){
break;
}
}
Run Code Online (Sandbox Code Playgroud)