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)//怎么回事?
* @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)//怎么回事?
你运行的时候没加参数吧
score=Integer.parseInt(args[1]);
args[1]引用了第二个参数执行的时候用 java xxxx 参数1 参数2
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中输入对应参数即可
javac cuowu.java --编译
java cuowu 1 2 --运行 (运行的时候要带两个参数,因为你在程序中用了 args[1],那么args[0]也要指定出来,所有“1”为第一个参数,“2”为第二个参数)
C:/....>java cuowu 98
here here !!!
args[i]吧?
而且很明显你的问题是数组越界问题:
首先你得注意了for 循环中实际上是执行了5此循环,但是要注意
for(int i=0;i<5;i++){
score=Integer.parseInt(args[i]);//强制转换
仔细理解啊,你输入的参数肯定不能少于5个(int类型的),否则肯定会发生数组越界问题!
而且score=Integer.parseInt(args[1]);中的args[1]应该为args[i].
下面是我帮你另外改了一下 感觉你要的是这个答案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);
}}
按照你的程序那么你应该在你java cuowu后跟两个数
比如:100 90
刚会输出对应于90的那个结果
再将结果循环五次输出在屏幕上
public static int parseInt(String s)
throws NumberFormatException 有两种处理方法,要么try{}catch{}住,要么在main函数后面直接跟上throws Exception 后面一种方法比较省事简单,但不是好的编程风格
oublic static void main(String[] args) throws Exception