java - 将字符串(最多 10 个字符)打印为菱形

标签 java string

我需要将一个字符串(最多 10 个字符)打印为菱形。

好吧,我现在尝试了将近 2-3 个小时来解决它,但我仍然遇到很多问题。

这是代码:它适用于输出“a”、“abc”、“abcde”。这意味着仅适用于长度为 1、3、5 的字符串。而且,它只打印钻石的前半部分。

非常感谢任何帮助。

导入java.util.Scanner;

public class MyFirstClass1
{
    public static void main(String[] args)
    {
        int halfSize;
        int p = 0;
        String message;
        System.out.println("Please enter a string: ");
        Scanner input = new Scanner(System.in);

        message = input.nextLine();
        //System.out.println((int)Math.ceil(message.length() / 2) + 1);
        halfSize = message.length() / 2;
         for (int i = 1; i <= message.length(); i++) {
             //Print spaces
              for (int k = 0; k < halfSize; k++)
                System.out.print(" ");
              halfSize--;

              System.out.print("\n");

              if((int)Math.ceil((float)message.length() / 2) + 1 >= p)
              {
              for (int j = 0; j < p + 1; j++)
                  System.out.print(message.charAt(j));
              }
              p+=2;
           }

    }
}

最佳答案

下面应该有帮助

    int halfSize;
    int p = 0;
    boolean is_bottom;
    String message;
    // System.out.println("Please enter a string: ");
    // Scanner input = new Scanner(System.in);

    message = "12345";
    is_bottom = false;

    //System.out.println((int)Math.ceil(message.length() / 2) + 1);
    halfSize = message.length() / 2;
     for (int i = 0; i < message.length(); i++) {
         //Print spaces
          for (int j = 0; j < message.length(); j++) {
            if (j == halfSize || (j <= (halfSize + p) && j >= (halfSize - p)))
              System.out.print(message.charAt(j));
              else
              System.out.print("*");
          }

          if (is_bottom == false) {
        if (p >= halfSize)
        is_bottom = true;
       }

       if (is_bottom == false)
       p++;
       else
       p--;

       System.out.println();
       }

I 是行 j 是列 if 语句是您在正确位置打印字符的主要逻辑

我为消息添加了一个静态字符串,以便您可以更快地看到结果,只需取消注释您的代码以请求输入。

还要确保检查字符串的长度是否为奇数,如果不是,则抛出一条错误消息,指出它是一个无效的字符串

与许多 for 循环和 if 语句相比,它更快、更整洁、更容易理解。 :) 希望您和我一样喜欢 Java

关于java - 将字符串(最多 10 个字符)打印为菱形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145072/

相关文章:

javascript - 拆分 div 文本,不使用制表符空格

python正则表达式,从字符串中提取一组数字

java - 存储和搜索大量字符串的最有效方式

java - 使用多个着色器

java - 将泛型与 Firebase snapshot.getValue() 结合使用的最佳实践

c# - 为什么 Path.Combine 优于 "\\"?

xml - 从字符串(不是文件)获取 XML

java - 高效所有子串按排序顺序计数

java - N个文件如何排序

java - 是否有 BufferedReader.readLine() 的等价物让我选择我的行尾字符是什么?