在java编程中使用用户输入的字符生成三角形
我不熟悉java的编码和使用。我已经在这段java代码上工作了很长一段时间了,我就是想不出来。我正在尝试编写一个程序,它以字符串作为输入,然后以一系列行的形式输出字符串,第一个字符,然后是两个字符,然后是三个字符,依此类推。但根据原始字符串的大小,最后一行可能较短。一个示例输出是:在java编程中使用用户输入的字符生成三角形,java,string,Java,String,我不熟悉java的编码和使用。我已经在这段java代码上工作了很长一段时间了,我就是想不出来。我正在尝试编写一个程序,它以字符串作为输入,然后以一系列行的形式输出字符串,第一个字符,然后是两个字符,然后是三个字符,依此类推。但根据原始字符串的大小,最后一行可能较短。一个示例输出是: String? abcdefghijklmnopqrstuvwxyz0123456789 a bc def ghij klmno pqrstu vwxyz01 23456789 这就是我现在所做的,我尝试了一些事情
String? abcdefghijklmnopqrstuvwxyz0123456789
a
bc
def
ghij
klmno
pqrstu
vwxyz01
23456789
这就是我现在所做的,我尝试了一些事情
import java.util.Scanner;
public class TrianglingPhrase {
public static void main(String[] args) {
// declare variables
String phrase;
int start = 0;
// get input
Scanner scan = new Scanner(System.in);
System.out.print("String? ");
phrase = scan.nextLine();
while(start < phrase.length()) {
String row = phrase.substring(start, start + 1);
start++;
System.out.println(row);
}
}
}
无论您做什么,子字符串(start,start+1)都只能生成长度为1的字符串。因此,至少这必须持续增长。在本例中使用var n。无论何时开始+n>length()它都应该停止增长
int n=0;
while(开始phrase.length())
n=短语.length()-开始;
字符串行=短语.子字符串(开始,开始+n);
开始+=n;
系统输出打印项次(行);
}
因为这些都是所谓的,所以可以用i*(i+1)/2对它们进行建模。“起点”跟踪旧终点的位置,以便您可以执行以下操作:
int start = 0;
int end = 1;
for (int i = 2; end <= phrase.length(); i++) {
String row = phrase.substring(start, end);
System.out.println(row);
start = end;
end = (i * (i + 1) / 2);
}
}
int start=0;
int-end=1;
对于(int i=2;end),当前代码的输出是什么?它不工作吗?
int n=0;
while(start < phrase.length()) {
n++;
if(start+n > phrase.length())
n=phrase.length()-start;
String row = phrase.substring(start, start + n);
start+=n;
System.out.println(row);
}
int start = 0;
int end = 1;
for (int i = 2; end <= phrase.length(); i++) {
String row = phrase.substring(start, end);
System.out.println(row);
start = end;
end = (i * (i + 1) / 2);
}
}