public class cuowu { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
int score;
char grade;
for(int i=0;i<5;i++){
score=Integer.parseInt(args[1]);
switch (score/10){
case 10:
case 9:
grade='A';break;
case 8:
grade='B';break;
case 7:
grade='C';break;
case 6:
grade='D';break;
default:
grade='F';break;

}
System.out.println("Score="+score+"Grade="+grade);


}
}}
//没有运行时没有错误提示~但是一运行就有一段如下的提示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at cuowu.main(cuowu.java:12)//怎么回事?

解决方案 »

  1.   

    ArrayIndexOutOfBoundsException 数组越界
    你运行的时候没加参数吧
      

  2.   

    你执行的时候要加参数啊!错在这里
    score=Integer.parseInt(args[1]);
    args[1]引用了第二个参数执行的时候用  java xxxx 参数1 参数2 
      

  3.   

    注意main函数的参数
    public static void main(String[] args) {
    main函数有一个String数组参数 args。
    score=Integer.parseInt(args[1]);//而这行你显然是取了数组的第二位的值,并且这个值应该是个数字类型运行方法是,如果你是用的命令行,那么直接 java cuowu "" "3"就可以传入两个参数
    从程序来看你不需要两个参数的,所以arg[1]改成arg[0]即可。然后java cuowu 3就可以。此处3可以为任意整数如果你是用的eclipse右键 run as→ Open run dialog,选中arguments,在program arguments中输入对应参数即可
      

  4.   

    运行的时候:
    javac cuowu.java     --编译
    java  cuowu 1 2      --运行 (运行的时候要带两个参数,因为你在程序中用了 args[1],那么args[0]也要指定出来,所有“1”为第一个参数,“2”为第二个参数)
      

  5.   

    cmd:
    C:/....>java cuowu 98
      

  6.   

    score=Integer.parseInt(args[1]);
    here  here !!!
      

  7.   

    你有没有输入至少两个参数啊  要不你怎么访问的了啊!,你访问了第二个数组args参数args[1],你至少也要为数组args提供;两个参数啊,要不你肯定会报数组越界异常的啊!
      

  8.   

    score=Integer.parseInt(args[1]);
    args[i]吧?
      

  9.   

    我的天,是您们理解错了吧,你是想写的args[i]吧?
    而且很明显你的问题是数组越界问题:
    首先你得注意了for 循环中实际上是执行了5此循环,但是要注意
    for(int i=0;i<5;i++){
    score=Integer.parseInt(args[i]);//强制转换
    仔细理解啊,你输入的参数肯定不能少于5个(int类型的),否则肯定会发生数组越界问题!
      

  10.   

    说的很明白Integer.parseInt(args[1]);//
      

  11.   

    先在cmd中javac cuowu.java然后java cuowu (加五个参数),例如java cuowu 10 20 40 100 90
    而且score=Integer.parseInt(args[1]);中的args[1]应该为args[i].
      

  12.   

    是数组OUTOFBOUNDS 写的很清楚的了
    下面是我帮你另外改了一下 感觉你要的是这个答案import java.io.*;
    public class Cuowu {/**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("请输入SCORE:");
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int score=0;
    char grade;
    try{
    //for(int i=0;i<5;i++){
    score=Integer.parseInt(br.readLine());
    }catch(IOException e){
    e.printStackTrace();
    }
    switch (score/10){
    case 10:
    case 9:
    grade='A';break;
    case 8:
    grade='B';break;
    case 7:
    grade='C';break;
    case 6:
    grade='D';break;
    default:
    grade='F';break;}
    System.out.println("Score="+score+"Grade="+grade);
    }}
      

  13.   

    补充:
    按照你的程序那么你应该在你java cuowu后跟两个数
    比如:100 90
    刚会输出对应于90的那个结果
    再将结果循环五次输出在屏幕上
      

  14.   

    score=Integer.parseInt(args[1]);  这才是错误!!!  可以看API文档, 
    public static int parseInt(String s)
                        throws NumberFormatException   有两种处理方法,要么try{}catch{}住,要么在main函数后面直接跟上throws Exception   后面一种方法比较省事简单,但不是好的编程风格   
      

  15.   

    在main函数后面直接跟上throw Exception,也就是下面这样
    oublic static void main(String[] args) throws Exception