每次使用嵌套循环打印时,如何取出字符串的最后一个字符

时间:2019-01-17 03:43:29

标签: java nested-loops

所以我刚刚在我的课堂上学习了嵌套循环,并且已经给我们提供了一个程序,但似乎无法弄清楚。该程序提示用户输入一个单词,并且输出应打印出该单词在不同行中的字母编号的多少倍,并且每次打印该单词时都应删除该单词的最后一个字符。 / 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

但是我的程序打印出了这个:

  

你好

     

你好

     

你好

     

你好

3 个答案:

答案 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();          
       }       
   }
 }