0

我希望你的星期天一切顺利。所以我在这个小程序中的目标是打印一个索引为 [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);

}
}
4

4 回答 4

0

While 条件,应检查您是否没有溢出字符串索引:

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

}
}
于 2013-10-21T05:32:21.670 回答
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 = "";
     }
于 2013-10-21T05:34:23.897 回答
0

问题是这条线

count += emptyStr.length();

emptyStr每次都会变长两个字符。所以第一次通过时,您将 2 添加到count. 下一次,您添加 4,然后添加 6,依此类推。所以count取值 0、2、6、12、20 等等。

如果str.length()不是这些值之一,您的循环将永远不会结束。

于 2013-10-21T05:48:59.250 回答
0

我不是 100% 确定你的问题,但问题似乎在这里:x += 4; y += 4;。您每次将这两个变量增加 4(X 为 0、4、8,Y 为 1、5、9)。

当您使用该.charAt函数时,您很可能会收到一个错误,这表明存在一些越界问题,因为 X 和 Y 的值大于字符串的长度。

您将需要更改 X 和 Y 的递增方式,以停止出现该错误。

于 2013-10-21T05:27:45.147 回答