所以我刚刚在我的课堂上学习了嵌套循环,并且已经给我们提供了一个程序,但似乎无法弄清楚。该程序提示用户输入一个单词,并且输出应打印出该单词在不同行中的字母编号的多少倍,并且每次打印该单词时都应删除该单词的最后一个字符。 / p>
这就是我现在所拥有的。我只能打印出整个单词以及应打印多少次。
import java.util.*;
public class MyClass {
public static void main(String args[]) {
Scanner kbreader = new Scanner (System.in);
System.out.print("Enter a word: ");
String word = kbreader.nextLine();
for ( int k = word.length(); k > 0; k--)
{
for (int m = 0; m <= word.length()-1; m++)
{
System.out.print(word.charAt(m));
}
System.out.println();
}
}
}
程序应打印出以下内容:
输入一个字:你好
你好
地狱
hel
他
h
但是我的程序打印出了这个:
你好
你好
你好
你好
答案 0 :(得分:0)
您正在寻找substring函数。可以在每种编程语言中找到它。
这是一个有效的示例:https://www.w3schools.com/jsref/jsref_substring.asp
同样重要的是,如果对参数使用负数,则它将从字符串的“结尾”而不是前面从子字符串开始,或者它将倒数而不是正数。
您的循环中有一个计数器,因此您应该可以轻松地进行游戏并使它与该功能一起使用。
答案 1 :(得分:0)
您可以尝试:
int length = word.length();
IntStream.range(0, length).forEach(i -> System.out.println(word.substring(0, length - i)));
或
IntStream.range(0, length).mapToObj(i -> word.substring(0, length - i)).forEach(System.out::println);
它使用Java stream
并且非常简洁。
答案 2 :(得分:0)
您刚刚犯了一个小错误。您可能会注意到,您没有使用k
进行任何操作,因此您只执行了k
次相同的任务。只需将m <= word.length()-1
更改为m < word.length()-k
。
import java.util.*;
public class MyClass {
public static void main(String args[]) {
Scanner kbreader = new Scanner (System.in);
System.out.print("Enter a word: ");
String word = kbreader.nextLine();
for ( int k = word.length(); k > 0; k--)
{
for (int m = 0; m < word.length()-k; m++)
{
System.out.print(word.charAt(m));
}
System.out.println();
}
}
}