Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不使用string.length的情况下迭代字符串_Java_Loops_While Loop - Fatal编程技术网

Java 在不使用string.length的情况下迭代字符串

Java 在不使用string.length的情况下迭代字符串,java,loops,while-loop,Java,Loops,While Loop,我编写了这段代码,我想在不使用s.length的情况下对字符串进行迭代。 我不知道while循环中的适当条件是什么 int i = 0; String s = "abcdefg"; while (s.charAt(i) != null) { System.out.println(s.charAt(i)); i++; } 没有理由不使用String的length()方法。但是,如果您必须: String s = "abcdefg"; for (Character c : s.to

我编写了这段代码,我想在不使用
s.length
的情况下对字符串进行迭代。 我不知道while循环中的适当条件是什么

int i = 0;
String s = "abcdefg";
while (s.charAt(i) != null) {
    System.out.println(s.charAt(i));
    i++;
}

没有理由不使用String的length()方法。但是,如果您必须:

String s = "abcdefg";
for (Character c : s.toCharArray()) {
    System.out.println(c);
}

没有理由不使用String的length()方法。但是,如果您必须:

String s = "abcdefg";
for (Character c : s.toCharArray()) {
    System.out.println(c);
}

不确定为什么不能使用长度,但此解决方案可以工作

    int i = 0;
    String s = "abcdefg";
    while(true)
    {
        try
        {
             system.out.println(s.charAt(i++));
        }
        catch
        {
            break;
        }
    }

不确定为什么不能使用长度,但此解决方案可以工作

    int i = 0;
    String s = "abcdefg";
    while(true)
    {
        try
        {
             system.out.println(s.charAt(i++));
        }
        catch
        {
            break;
        }
    }

是的,您可以捕获IndexOutOfBounds异常,当您尝试读取字符串范围之外的字符时会抛出该异常。但是使用长度(如果可能的话?!)会更好。

是的,您可以捕获IndexOutOfBounds异常,当您尝试读取字符串范围之外的字符时会抛出该异常。但是使用长度(如果可能的话?!)会更好。

为什么你不能使用
length
?也许可以使用while(s.charAt(i+1)!=null){更准确一点-我不明白为什么我的代码不起作用。@StreamingBits像OP显示的那样..D:
charAt(i)当索引超出字符串的边界时,
将抛出一个
IndexOutOfBoundsException
;它不会返回null.Read。为什么不能使用
length
?也许可以使用while(s.charAt(i+1)!=null){更准确一些-我不明白我的代码为什么不起作用。@StreamingBits如OP所示..D:
charAt(i)
将在索引超出字符串边界时抛出一个
IndexOutOfBoundsException
;它不会返回null.Read。使用
字符c
字符c
。无需处理包装器对象的开销。使用
字符c
字符c
。无需处理包装器的开销对象。通常不鼓励将异常用于流控制。通常不鼓励将异常用于流控制。