我有一个函数在这个函数中用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方法只是调用此方法传入一个字符串和流参数。
编辑添加了主要方法
答案 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++;
}