【问题标题】:Java word box pattern [closed]Java字框模式[关闭]
【发布时间】:2021-04-21 21:31:33
【问题描述】:

我正在尝试创建一个将单词作为输入并将其打印为框的框模式。

我已经让顶部、底部和左侧工作,但我不确定如何处理右侧。

更具体地说,我不知道如何让系统从顶行的最后一个字母开始输出单词。

有人有什么想法吗?

【问题讨论】:

  • 将代码添加为文本而不是图像
  • “右”部分需要与“左”部分处于相同的循环/行中。
  • 代码应作为文本粘贴到问题中。如果将其作为图像放入,那么为了使这个问题在将来仍然有效,仍然必须发布图像。事实上,一旦你的链接失败,这个原本很好的问题就会变得毫无用处。

标签: java string output box


【解决方案1】:

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) + " ");
        }
    }
}

【讨论】:

    【解决方案2】:

    在创建框的左侧时,您还需要在右侧添加字母,您可以通过添加空格然后添加您的字母来做到这一点:

    ...
    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");
    }
    ...
    

    【讨论】:

      【解决方案3】:

      您可以使用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());
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2013-11-11
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        相关资源
        最近更新 更多