如果输入字符串是 “管理” 模式应该是这样的 一种 糖尿病 尼尼 斯特拉
最后一行应完全填充
如果输入字符串是“ 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();
帮我解决这个问题。
答案 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
不会更改行。