试图更好地掌握循环逻辑。

时间:2013-10-21 05:22:39

标签: java while-loop charat

我希望你的星期天进展顺利。所以我在这个小程序中的目标是打印一个带索引[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 个答案:

答案 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()不是其中一个值,那么你的循环永远不会结束。