我想基本上隐藏三个常量点后面的字符(...(,模式是这样的:
输入来自用户的短语并输出后跟三个点 (...( 的短语,然后输出短语减去一个字符后跟三个点 (...(,然后输出短语减去两个字符,后跟点,依此类推,直到只剩下一个点。
注意:这必须仅使用嵌套的 for 循环来完成
示例输入
1
disappear
预期产出:
disappear...
disappea...
disappe...
disapp...
disap...
disa...
dis...
di...
d...
...
..
.
这是我的尝试:
问题:我无法做到,所以短语每次都会减少(每次减去 1(
我尝试使用 charAt((; 方法,但它不起作用,我确信在这种情况下,您需要为每个点或整组点单独提供一个 for 循环。
import java.util.Scanner;
public class Dissappear{
public static void main(String[]args){
Scanner keyboard = new Scanner(System.in);
int option = keyboard.nextInt();
String phrase = keyboard.next();
if (option == 1){
for (int x = 0; x <= phrase.length(); x++){
System.out.print(phrase + "...");
for (int y = 0; y <= phrase.length(); y++){
char n = phrase.charAt(y);
System.out.print(n+"...");
}
}
}
}
}
这就是我让它工作的方式:
public class Disappear {
public static void main(String... args) {
String word = "disappear";
int originalLength = word.length();
for(int i = 0; i < originalLength; i++) {
System.out.println(word.substring(0, originalLength - i) + "...");
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3 - i; j++) {
System.out.print(".");
}
System.out.println();
}
}
}
不带子字符串:
public class Disappear {
public static void main(String... args) {
String word = "disappear";
int originalLength = word.length();
for(int i = 0; i < originalLength; i++) {
for(int j = 0; j < originalLength - i; j++) {
System.out.print(word.charAt(j));
}
System.out.println("...");
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3 - i; j++) {
System.out.print(".");
}
System.out.println();
}
}
}
你可以用StringBuilder来做到这一点:
StringBuilder stringBuilder = new StringBuilder(str);
System.out.println(str + "...");
for (int i = 0; i < length; i++) {
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
System.out.println(stringBuilder.toString() + "...");
if (i == length - 1) {
for (int j = 0; j < 2; j++) {
for (int k = j; k < 2; k++) {
System.out.print(".");
}
System.out.println();
}
}
好的!嵌套for
循环。 但外部的只是为了满足要求而包括在内。 可能不符合任务的精神。 只需不断递减k
直到它为零,然后将其锁定在那里,直到StringBuilder
长度0
并且内环终止。
StringBuilder sb = new StringBuilder("disappear...");
for (;;) {
for (int k = sb.length() - 4; sb.length() > 0;) {
System.out.println(sb);
sb.delete(k, k + 1);
k = k > 0 ? --k : 0;
}
break;
}