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

Java 试图更好地掌握循环逻辑。,java,while-loop,charat,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.

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

}
}

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

当您使用
.charAt
函数时,您很可能会遇到一个错误,表示某些超出范围的问题,因为X和Y的值大于字符串的长度


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

在条件下,应检查您是否未溢出字符串索引:

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

}
}
import java.util.Scanner;
公共课实践{
公共静态void main(字符串[]args){
Scanner myScanner=新扫描仪(System.in);
System.out.print(“请输入字符串:”);
String str=myScanner.next();
int x=0;
int y=1;
字符串emptyStr=“”;

而(y这就是你所需要的:

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

问题是这条线

count += emptyStr.length();
您的
emptyStr
每次都会变长两个字符。因此,第一次通过,您将2添加到
count
。下一次,您将添加4,然后添加6,依此类推。因此
count
取值0、2、6、12、20等等


如果
str.length()
不是这些值中的一个,那么你的循环将永远不会结束。

事实上,我现在是星期一,正是这种思维方式会给你编程带来很多问题。你得到了什么样的运算?单词“kitten”-->kie和单词“CodingConnor”-->CongnnI强烈建议不要调用变量
emptyStr
,除非它总是空的。查看
System.out.print(emptyStr)的人
底部的人可能会想知道为什么要打印空字符串,但事实上,你没有。@Carlitolos同样,正如其他人所指出的,你可能想在
状态时查看你的R