【问题标题】:Making a hollow diamond with a word in it制作一个带有单词的空心钻石
【发布时间】:2015-01-05 10:59:07
【问题描述】:

我需要对我的代码进行一点修改,以便空心菱形的每个部分都打印一个“飓风”一词

我的代码是:

String st1 = "HURRICANE";
int a = 0;
for (int i = 5; i >= 1; i--) {
    for (int j = 1; j <= 9; j++) {
        if (j == i || (10 - i) == j) {
            System.out.print(st1.charAt(a)); //needs change
        } else {
            System.out.print(' ');
        }
    }
    System.out.println();
}
for (int i = 2; i <= 5; i++) {
    for (int j = 1; j <= 9; j++) {
        if (j == i || (10 - i) == j) {
            System.out.print(st1.charAt(a)); //needs change
        } else {
            System.out.print(' ');
        }
    }
    System.out.println();
}

输出如下:

    H    
   H H   
  H   H  
 H     H 
H       H
 H     H 
  H   H  
   H H   
    H    

我需要稍微修改一下我的“charAt”语句,结果是:

    H    
   U U   
  R   R  
 R     R 
I       I
 C     C 
  A   A  
   N N   
    E

我应该如何制作我的打印声明?

【问题讨论】:

    标签: java string substring charat


    【解决方案1】:

    值得注意的是,提供的示例仅适用于与“HURRICANE”长度相同的字符串。一个出色的解决方案适用于所有字符串。

    部分解决方案供您完成,因为我猜这是您的课程作业,我不希望您复制/粘贴/未通过考试:P

    public static void main(String[] args) {
        String st1 = "HURRICANE";
        char[] st1CharArray = st1.toCharArray();
        int maxSpaces = st1CharArray.length / 2 + 1;
        for (int i = 0; i <= st1CharArray.length / 2; i++) {
            if (i == 0) {
                System.out.println(getSpacesString(maxSpaces) + st1CharArray[i]);
            } else {
                System.out.println(getSpacesString(maxSpaces - i)
                        + st1CharArray[i] + getSpacesString(i * 2 - 1)
                        + st1CharArray[i]);
            }
        }
        // Loop from st1CharArray.length / 2 + 1 and get the second half done.
    }
    
    private static String getSpacesString(int numberOfSpaces) {
        StringBuilder strBuilder = new StringBuilder();
        for (int i = 0; i < numberOfSpaces; i++) {
            strBuilder.append(" ");
        }
        return strBuilder.toString();
    }
    

    【讨论】:

      【解决方案2】:
      String st1 = "HURRICANE";
      int a = 0;
      for (int i = 5; i >= 1; i--) {
          for (int j = 1; j <= 9; j++) {
              if (j == i || (10 - i) == j) {
                  System.out.print(st1.charAt(5 - i));
              } else {
                  System.out.print(' ');
              }
          }
          System.out.println();
      }
      for (int i = 2; i <= 5; i++) {
          for (int j = 1; j <= 9; j++) {
              if (j == i || (10 - i) == j) {
                  System.out.print(st1.charAt(3 + i));
              } else {
                  System.out.print(' ');
              }
          }
          System.out.println();
      }
      

      【讨论】:

        【解决方案3】:
        //: Playground - noun: a place where people can play
        
        import UIKit
        
        var name : String = "HURRICANE"
        var dimensions : Int = name.count - 1
        var k : Int = 0
        
        for rows in 0...dimensions{
            for columns in 0...dimensions{
                k = abs( (dimensions/2) - rows )
        
                if columns == k || columns == dimensions - k{
                    print(Array(name)[rows], terminator: "")
                }
                else{
                    print(" ", terminator: "" )
                }
            }
        
            print("")
        }
        

        【讨论】:

          【解决方案4】:

          假设一个单词有奇数个字符,否则我们会得到一个歪斜的菱形。

          Try it online!

          public static void main(String[] args) {
              String str = "abrahadabra";
              int n = str.length() / 2;
              for (int i = -n, ch = 0; i <= n && ch < str.length(); i++, ch++) {
                  for (int j = -n; j <= n; j++)
                      if (Math.abs(i) + Math.abs(j) == n)
                          System.out.print(str.charAt(ch));
                      else
                          System.out.print(" ");
                  System.out.println();
              }
          }
          

          输出:

               a     
              b b    
             r   r   
            a     a  
           h       h 
          a         a
           d       d 
            a     a  
             b   b   
              r r    
               a     
          

          【讨论】:

            猜你喜欢
            • 2022-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多