Java 字框模式
Java word box pattern
我正在尝试创建一个方框图案,将单词作为输入并将其打印为方框。
我可以在顶部、底部和左侧工作,但我不确定如何在右侧工作。
更具体地说,我不知道如何让系统输出从顶行最后一个字母开始的单词。
有人有什么想法吗?
java-11
您可以使用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
在 Java-11 之前:
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", "")
打印space
这里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());
}
}
我正在尝试创建一个方框图案,将单词作为输入并将其打印为方框。
我可以在顶部、底部和左侧工作,但我不确定如何在右侧工作。
更具体地说,我不知道如何让系统输出从顶行最后一个字母开始的单词。
有人有什么想法吗?
java-11
您可以使用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
在 Java-11 之前:
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", "")
打印space
这里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());
}
}