java 自定义数组。提示用户输入5个字符串。通过循环语句实现。然后反向输出这5个字符串。 我那里错了?

import java.util.Scanner;;
public class ShuZu {

/**
* @param args
*/
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
System.out.println("输入5个字符");
String[]num;
num=new String[5];
for(int i=0;i<=num.length;i++){
num[i]=reader.next();

}
for(int i=5;i>=0;i--){
System.out.print(num[i]);
}
}

}

import java.util.Scanner;;
public class ShuZu {

/**
* @param args
*/
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
System.out.println("输入5个字符");
String[]num;
num=new String[5];
for(int i=0;i<num.length;i++){
num[i]=reader.next();

}
for(int i=4;i>=0;i--){
System.out.println(num[i]);
}
}

}
你的数组越界了5个数组,数组下标最大为4,而数组的属性值length是等于5;那么循环实际上是从0到5所以越界了,输出也一样
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-24
Scanner reader=new Scanner(System.in);
System.out.println("输入5个字符");
String[]num;
num=new String[5];
for(int i=0;i<num.length;i++){
num[i]=reader.next();
}
for(int i=num.length-1;i>=0;i--){
System.out.println(num[i]);
}
可以运行 读取的 下标 第一次 for 循环你读了六次 num[5] 越界了 ,还有下面 的同理
用println 换行输出 满足你需求吧
第2个回答  2012-04-24
数组越界,你初始化数组大小是5,后面for循环从0到5加了6次改为
for(int i=0;i<num.length;i++){
num[i]=reader.next();

}
第3个回答  2012-04-24
可以把也控制台输入的字符串用StringBuffer接收,他有个方法reverse()是将字符串倒序输出的
相似回答