如何分别使用 for 循环隐藏字符?



我想基本上隐藏三个常量点后面的字符(...(,模式是这样的:


输入来自用户的短语并输出后跟三个点 (...( 的短语,然后输出短语减去一个字符后跟三个点 (...(,然后输出短语减去两个字符,后跟点,依此类推,直到只剩下一个点。

注意:这必须仅使用嵌套的 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;
}

最新更新