gpt4 book ai didi

Java使用嵌套for循环打印带有旋转数字的数字方 block

转载 作者:行者123 更新时间:2023-12-01 22:32:45 29 4
gpt4 key购买 nike

/*这是完整的问题:
编写一个名为 printSquare 的方法,它接受两个整数参数(最小值和最大值),并以正方形模式打印从最小值到最大值(含)范围内的数字。通过示例比通过解释更容易理解方形模式,因此请查看下表中的示例方法调用及其生成的控制台输出。

正方形的每条线都由最小和最大之间递增的整数组成的循环序列组成。每行打印该序列的不同排列。第一行以 min 开头,第二行以 min + 1 开头,依此类推。当任意行中的序列达到最大值时,它会回绕到最小值。

您可以假设该方法的调用者将传递一个 min 和一个 max 参数,使得 min 小于或等于 max。 */

大家好,我遇到了这个无法解决的问题。就是调用这个方法printSquare(1,5);获得此输出:

12345

23451

34512

45123

51234

到目前为止,这是我的代码。我似乎无法将前面的数字移到后面。

public static void printSquare (int startNum, int height){

if (startNum == height){
System.out.print(height);
return;
}

for (int i = startNum; i <= height; i++){
int max = startNum;
int j = i;
for (j = i; j <= height; j++){
System.out.print (j);
}

System.out.println();
}
}

最佳答案

如果您的内部循环以 i 开头,则它必须以 height + i 结束,而不仅仅是 height 才能使输出为正方形,否则它将是一个三角形。您想了解取模运算符%来确定除法的余数,从而处理“溢出”。

您给出的规范不清楚如果 startNum != 1 时“溢出”会发生什么。

此外,如果 height 实际上意味着 height (并且,因为它说 < em>printSquare,宽度)。我希望 printSquare(4, 4) 打印四行和四列,而不仅仅是一行和一列。命名似乎有问题。一般来说,这样的 guard 都是可疑的。算法代码应该是通用的,不需要单独处理这种特殊情况。

以下是适用于 printSquare(1, 5);printSquare(1, 1); 情况的可能实现。对于其他情况,您的规范不够明确。

public class Main {
public static void main(final String... args) {
printSquare(1, 5);
printSquare(1, 1);
//printSquare(2, 6);
//printSquare(4, 4);
}

public static void printSquare(int startNum, int height) {
for (int i = startNum; i < startNum + height; i++) {
for (int j = i; j < height + i; j++) {
System.out.print((j - 1) % height + 1);
}
System.out.println();
}
System.out.println();
}
}

如果结束编号不是单独由 height 确定,而是由 startNum + height - 1 确定,可能的解决方案如下所示:

    public static void printSquare(int startNum, int height) {
for (int i = startNum; i < startNum + height; i++) {
for (int j = 0; j < height; j++) {
System.out.print((j + i - startNum) % (height) + startNum);
}
System.out.println();
}
System.out.println();
}

关于Java使用嵌套for循环打印带有旋转数字的数字方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27365620/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com