while循环不显示字符串

时间:2014-01-08 00:32:36

标签: java while-loop

我有一个函数在这个函数中用char打印char数组char,stream参数就是让我们习惯从java到C的转换

public static int writeline (String message, PrintStream stream) {        
    // YOUR CODE GOES HERE
    char[] array = new char[message.length()];

    for(int i = 0;  i < message.length(); i++){
        array[i] = new Character(message.charAt(i));
    }

    int index = 0;
    while( array[index] < message.length()){
         fputc(array[index],stream);
         index++;
    }
    return 0;
}  

public static void main( String[] args ) {

    System.err.print("Hola Mundo\n");
    writeline ("Hello World", System.out); 
} 

while循环只有在我给出类似array[index] != null的条件时才有效,但它会打印带有越界异常错误的字符串。   否则,没有打印出来。 main方法只是调用此方法传入一个字符串和流参数。

为了清晰起见,

编辑添加了主要方法

2 个答案:

答案 0 :(得分:2)

目前您正在循环,而字符串中每个字符的数值小于字符串的长度。这是ASCII chart。这给出了字符的数值。

你的字符串可能不超过&#39; a&#39;的数字值。或者&#39; A&#39;对?所以循环的条件是假的,没有打印出来。

当你在array[index]!=null循环时,你得到一个ArrayIndexOutOfBoundsException,因为循环是真的,直到数组结束(因为数组中没有任何元素为空。)最后你引用一个索引不存在。

你想要做的是循环,而index的值小于你的字符数组的长度。

while(index < array.length){
    //code code code ;)
}

如果您允许在此处使用for循环,我会使用它代替while稍微清洁。

for(int index=0;index<array.length;index++){
    //same code.
}

答案 1 :(得分:1)

以下修补程序将循环,直到索引等于字符串的长度:

int index = 0;
while( index < message.length()){
     fputc(array[index],stream);
     index++;
}