【发布时间】:2021-04-21 21:31:33
【问题描述】:
【问题讨论】:
-
将代码添加为文本而不是图像
-
“右”部分需要与“左”部分处于相同的循环/行中。
-
代码应作为文本粘贴到问题中。如果将其作为图像放入,那么为了使这个问题在将来仍然有效,仍然必须发布图像。事实上,一旦你的链接失败,这个原本很好的问题就会变得毫无用处。
【问题讨论】:
您可以使用String#repeat重复所需的空格数,如下所示:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a word: ");
String word = in.nextLine();
int len = word.length();
// Top line
for (int i = 0; i < len; i++) {
System.out.print(word.charAt(i) + " ");
}
System.out.println();
// Left and right letters
for (int i = 1; i < len - 1; i++) {
System.out.println(word.charAt(i) + " ".repeat((len - 2) * 2 + 1) + word.charAt(len - i - 1));
}
// Bottom line
for (int i = len - 1; i >= 0; i--) {
System.out.print(word.charAt(i) + " ");
}
}
}
示例运行:
Enter a word: Hello
H e l l o
e l
l l
l e
o l l e H
另一个示例运行:
Enter a word: World
W o r l d
o l
r r
l o
d l r o W
String#repeat 是随 Java-11 引入的。如果您使用 Java-11 之前的 Java 版本执行此操作,则需要使用嵌套循环复制此功能,如下所示:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a word: ");
String word = in.nextLine();
int len = word.length();
// Top line
for (int i = 0; i < len; i++) {
System.out.print(word.charAt(i) + " ");
}
System.out.println();
// Left and right letters
for (int i = 1; i < len - 1; i++) {
System.out.print(word.charAt(i));
for (int j = 1; j <= (len - 2) * 2 + 1; j++) {
System.out.print(" ");
}
System.out.println(word.charAt(len - i - 1));
}
// Bottom line
for (int i = len - 1; i >= 0; i--) {
System.out.print(word.charAt(i) + " ");
}
}
}
【讨论】:
在创建框的左侧时,您还需要在右侧添加字母,您可以通过添加空格然后添加您的字母来做到这一点:
...
for (int index = 1; index + 1 < word.length(); index++) // left side and right side
{
System.out.print(word.charAt(index) + " ");
for (int i = 1; i < word.length() - 1; i++)
{
System.out.print(" ");
}
System.out.print(word.charAt(word.length() - index - 1) + "\n");
}
...
【讨论】:
您可以使用String.format("%" + (length+2) + "s", "")打印空间
这里length表示输入单词的长度。
完整代码:
public class Main {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.println("Enter a word");
String word = in.next();
int length = word.length();
String startWord = word.replace(""," ").trim();
StringBuilder stringBuilder = new StringBuilder(startWord);
System.out.println(stringBuilder.toString());
for (int i = 1; i <length-1 ; i++) {
System.out.println(word.charAt(i)+String.format("%" + (length+2) + "s", "") +word.charAt(length-1-i));
}
System.out.println(stringBuilder.reverse().toString());
}
}
【讨论】: