我希望你的星期天进展顺利。所以我在这个小程序中的目标是打印一个带索引[0,1] [4,5] ... [12,13]的新字符串...循环仅用一个大于4个字母的偶数字来起作用。为什么是这样?关于如何抛光这种粪便的任何建议将不胜感激。谢谢。
import java.util.Scanner;
public class LoopPractice {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.print("Enter a String please: ");
String str = myScanner.next();
int count = 0;
int x = 0;
int y = 1;
String emptyStr = "";
while ( count != str.length() ) {
emptyStr += str.charAt(x) + "" + str.charAt(y);
x += 4;
y += 4;
count += emptyStr.length();
}
System.out.print(emptyStr);
}
}
答案 0 :(得分:0)
我不是100%肯定你的问题,但问题似乎在于:x += 4; y += 4;
。您每次将这两个变量递增4(对于X为0,4,8,对于Y为1,5,9)。
使用.charAt
函数时,由于X和Y的值大于字符串的长度,因此很可能会出现一个表示出现问题的错误。
您需要更改X和Y递增的方式,以便您停止收到该错误。
答案 1 :(得分:0)
虽然条件,但应检查你是否不是溢出字符串索引:
import java.util.Scanner;
public class LoopPractice {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.print("Enter a String please: ");
String str = myScanner.next();
int x = 0;
int y = 1;
String emptyStr = "";
while ( y <= str.length() ) {
emptyStr += str.charAt(x) + "" + str.charAt(y);
x += 4;
y += 4;
}
System.out.print(emptyStr);
}
}
答案 2 :(得分:0)
这就是你所需要的:
System.out.print("Enter a String please: ");
String str = myScanner.next();
while(!str.isEmpty()){
System.out.println(str.charAt(0)+""+str.charAt(1));
if(str.length()>4)
str = str.substring(4);
else
str = "";
}
答案 3 :(得分:0)
问题在于这一行
count += emptyStr.length();
您的emptyStr
每次都会变长两个字符。因此,第一次,您将{2}添加到count
。下次添加4,然后添加6,依此类推。所以count
取值0,2,6,12,20等等。
如果str.length()
不是其中一个值,那么你的循环永远不会结束。