首页 > 解决方案 > 减少和打印字符串数组

问题描述

我正在尝试通过使用 for 循环来减少字符串数组。这是我尝试做的一个例子

User string input: Calculus
User input:5
output: CalcuCalcCalCaC

我已将字符串转换为 char 数组,但是在尝试多次打印它们时问题就出现了。它只打印一次并且具有正确的起始输出。

input string: Oregon
input number: 4

output: Oreg

我注意到我的 for 循环说当我将鼠标悬停在从 JetBrains 下载的 IDE 上时它没有循环。

我尝试了不同的递减和递增组合,但无法得到“for 语句没有循环”。除此之外,我尝试了不同的方法在 for 循环中做某事,但如果 for 循环当时没有循环,我认为现在不需要做任何事情,对吧?

所以我的问题是,如何减少字符串或字符数组并一遍又一遍地打印递减值?

Here is my code so far for it.

public String wordDown(String userString, int userNum)
    {
        String stringModded = userString.substring(0, userNum);

        char[] charArray = stringModded.toCharArray();
        char repeat = ' ';

        for(int i = 0; i<userNum; ++i)
        {
            repeat = (char) (repeat +charArray[i]);
            charArray[i] = repeat;

            for(int j = 1; i > charArray.length; ++j)
            {
                String modWord = String.valueOf(charArray[i + 1]);
                return modWord;
            }
        }

        return null;
    }

public static void main(String[] args)
    {
        int userNumber;
        String userString;

        RandomArrayFunctionalities ranMethod = new RandomArrayFunctionalities();

        Scanner in = new Scanner(System.in);

        System.out.println("\nEnter a word:");
        userString = in.next();

        System.out.println("\nEnter a number within the word scope that you just enter:");
        userNumber = in.nextInt();

        System.out.println(ranMethod.wordDown(userString, userNumber));

    }

标签: javaarraysstringloopsfor-loop

解决方案


您不需要修改原始数组。使用 aStringBuilder连接单词的连续部分。使用该String.substring(int,int)方法拉出那些部件。下面的示例使用递减索引来生成连续更小的子字符串。

public String wordDown(String word, int userNum) {
  StringBuilder sb = new StringBuilder();
  for (int length = userNum ; length > 0 ; --length) {
    sb.append(word.substring(0, length));
  }
  return sb.toString();
}

推荐阅读