import java.io.*;
public class list {
public static void main(String[] args) {

String input;
try {
for (int i = 0; i < 3; i++) {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
input = br.readLine();
args[i] = input; }
} catch (IOException e) {
System.err.println("IOException"); } for (int j = 0; j < args.length; j++)
System.out.println(args[j]); }}输入q w e
输出的结果为q w e n
连试好几次,为啥会有一个n呢?

解决方案 »

  1.   

    你的代码是有问题的,问题的原因在于args没有初始化。我改了改,没啥问题,以下代码在jdk1.6.0_10上通过import java.io.*;
    public class list {
        public static void main(String[] args) {
            
            int n=3;
            args=new String[3];
            String input;
            try {
                for (int i = 0; i < n; i++) {
                    BufferedReader br = new BufferedReader(new InputStreamReader(
                            System.in));
                    input = br.readLine();
                    args[i] = input;            }
            } catch (IOException e) {
                System.err.println("IOException");        }        for (int j = 0; j < args.length; j++)
                System.out.println(args[j]);    }}
      

  2.   

    这个程序好像有问题:
    input = br.readLine();这句话每次输入的是一个字符串,包括空格,也就是说input="q w e";
    我这里运行出来抛出ArrayIndexOutOfBoundsException异常LZ你没有错误吗?
      

  3.   

    楼主你的程序应该运行报错才对,因为args这个字符串数组根本没有初始化,怎么能直接赋值呢,楼上的朋友给你改了,应该没问题了。
      

  4.   

    和args数组初始化没有关系。args数组是存放程序执行时的参数的,比如(程序名为"Sample.java",顺便说一句,butter0000最好不要把class命名为list,这样很容易和jdk中的List类混淆):java Sample argA argB argC这样在进入主函数时args数组长度即为3,args[0]==argA, args[1]==argB, args[2]==argC问题中list类在执行时如果后面没有参数,又或者参数数目小于3,那么args的长度即小于3,在赋值时会出现thc1987所说的越界异常。
      

  5.   

    用 java list argA argB argC 做试验,程序表现正常:程序要求执行者输入三行字符串,在第三行字符串输入结束后(键入"Enter"),于屏幕上打印出已输入的内容。
      

  6.   

    楼上的说得没错,和args数组是否初始化没有关系,运行程序的时候把参数设置好