缩减并打印字符串数组



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

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

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

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));
}

不需要修改原数组。使用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();
}

我认为你是过于复杂的事情,你不需要一个char数组,你只需要一个循环,和一个单一的返回语句:

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;
}

简单地从0inputtedNumber - loopCounter循环到输入的数字和substring,并将结果附加到先前保存的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();
}

最新更新