【问题标题】:Reducing and printing a string Array减少和打印字符串数组
【发布时间】:2021-12-07 12:30:29
【问题描述】:

我正在尝试通过使用 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));

    }

【问题讨论】:

    标签: java arrays string loops for-loop


    【解决方案1】:

    您不需要修改原始数组。使用StringBuilder 连接单词的连续部分。使用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();
    }
    

    【讨论】:

    • StringBuilder 有方法 append(char[], int offset, int len) 可以帮助避免使用 char 数组 char[] arr = word.toCharArray(); for (int i = userNum; i &gt; 0; --i) { sb.append(arr, 0, i); } 创建子字符串
    【解决方案2】:

    我认为你把事情复杂化了,你根本不需要 char 数组,你只需要一个循环和一个 return 语句:

    public String wordDown(String userString, int userNum) {
        String finalString = "";
    
        for (int i = 0; i < userNum; ++i) {
            finalString = finalString + userString.substring(0, userNum - i);
        }
    
        return finalString;
    }
    

    只需将输入的数字和substring0 循环到inputtedNumber - loopCounter,并将结果附加到先前保存的String 值。

    示例运行:

    Enter a word:
    Calculus
    
    Enter a number within the word scope that you just enter:
    5
    CalcuCalcCalCaC
    

    旁注

    从技术上讲,您可能希望使用 StringBuilder 而不是在循环中附加 String,但这可能超出了本问题的范围。这是那个版本仅供参考:

    public String wordDown(String userString, int userNum) {
        StringBuilder sb = new StringBuilder();
    
        for (int i = 0; i < userNum; ++i) {
            sb.append(userString.substring(0, userNum - i));
        }
    
        return sb.toString();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-15
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2017-02-14
      • 2016-01-31
      • 2022-01-13
      相关资源
      最近更新 更多