Java程序打印字符串模式

时间:2018-09-22 21:15:29

标签: java string

如果输入字符串是 “管理” 模式应该是这样的 一种 糖尿病 尼尼 斯特拉

最后一行应完全填充

如果输入字符串是“ COMPUTER” 模式应该是这样的 C OM 放 ER **

不完整的最后一行应使用*

填充

我有图案但不能打印星星。

    int k=0;
    String str = "computer";
    String[] s=str.split("\\B");
    for(int i=0; i<s.length;i++){
        for(int j=0; j<i;j++){
            if(k<s.length){
        System.out.println(s[k]);
        k++;
            }
    }
        System.out.println();

帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

在没有提供代码的情况下写的-早些时候用 C 标记了。

以问题陈述中描述的方式打印字符串是简单的递归。这是等效的 C 代码(因为该问题也在 Java 中进行了标记):

  #include<stdio.h>

  int i=1;

  void fun(char c[])
  {
      int j=0;

      while((j<i)&&(c[j]))
      {
          printf("%c",c[j++]);
      }
      while((c[j]=='\0')&&(j<i))
      {
          printf("*");
          ++j;
      }

      ++i;
      if(c[j])
      {
          printf(" ");
          fun(c+j);
      }
  }

  int main(void)
  {
      char c[]="computer";
      fun(c);
      return 0;
  }

输出:

 c om put er**

如果要替换\0检查,则可以使用字符串的长度作为检查,因为我不知道Java中是否存在空终止。

答案 1 :(得分:0)

Java版本,因为注释不适用于代码:

String str = "computer";
int k = 0;
for (int i=0; k<str.length(); i++) {  // note: condition using k
    for (int j=0; j<i; j++) {
        if (k < str.length()) {
            System.out.print(str.charAt(k++));
        } else {
            System.out.print("*");  // after the end of the array
        }
    }
    System.out.println();
}

未经测试,只是一个想法

注意:不需要使用split,因为我们需要字符串的每个字符-我们可以使用charAt(或toCharArray)。使用print而非println不会更改行。