gpt4 book ai didi

java - 给定字符串的空心平方

转载 作者:行者123 更新时间:2023-12-04 07:43:34 25 4
gpt4 key购买 nike

我正在尝试编写一个接受 3 个参数并返回一个空心方块的方法。
第一个方法参数 = 字符串的长度。
第二个方法参数 = 正方形的一个臂中有多少个字符。
第三个方法参数 = 字符串。
条件:示例,如果第二个参数是 4,那么形成一个正方形总共需要 12 个字符,如果给定的字符串是排序器,那么它将被重复 (abcdefghabcd)。
我已经写了一个代码,但这不能满足几个条件。

public void patternmaker(int a, int b, String s) {
try {
int p = -2, q = 0, z = 0;
for (int x = 1; x <= b; x++) {
for (int y = 1; y <= b; y++) {

if (x == 1) {
System.out.print(s.charAt(y + b - 2) + " ");
} else if (x == b && y > 1) {
System.out.print(s.charAt(a + z - 1) + " ");
z = z - 1;
} else if (x == b && y == 1) {
System.out.print(s.charAt(0) + " ");

} else if (y == 1 && x > 1 && x < b) {
System.out.print(s.charAt(b + p) + " ");
p = p - 1;
} else if (y == b && x > 1 && x < b) {
System.out.print(s.charAt(2 * b - 2 + x - 1) + " ");
} else {
System.out.print(" ");
}
}
System.out.println();

}
}
catch (Exception e) {
}

}
例如引用图片
enter image description here
任何建议或意见?

最佳答案

有多种方法可以解决这个问题。
方法一
创建一个尺寸与正方形边相同的二维数组。迭代字符串元素并填充数组。打印数组的所有元素。
这虽然易于实现,但随着正方形变大,将需要大量内存。
方法二
与第一种方法相比,这种方法更有效(在时间和内存方面)。

public class Main
{
public static void patternmaker(int length, int side, String s) {
try {
char ch;
int idx = side - 1;
//first row
for (; idx <= 2*(side - 1) ; idx++)
{
ch = s.charAt(idx%length);
System.out.print(ch + " ");
}
System.out.println();
//middle rows
for (; idx < 3*(side - 1) ; idx++)
{
ch = s.charAt((3*(side - 1) - idx)%length);
System.out.print(ch + " ");
for (int spaceNo = 2 ; spaceNo < side ; spaceNo++)
{
System.out.print(" ");//Two spaces inside
}
ch = s.charAt(idx%length);
System.out.println(ch + " ");
}
//last row
System.out.print(s.charAt(0) + " ");
for (idx = 4*(side - 1) - 1 ; idx >= 3*(side -1); idx--)
{
ch = s.charAt(idx%length);
System.out.print(ch + " ");
}
System.out.println();
}
catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String[] args) {
patternmaker(8, 6, "12345678");
System.out.println();
patternmaker(3, 4, "123");
System.out.println();
patternmaker(2, 5, "12");
System.out.println();
patternmaker(5, 5, "13579");
System.out.println();
patternmaker(4, 8, "2468");
}
}

关于java - 给定字符串的空心平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67320291/

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