将命令行输入转换为数组

时间:2009-04-22 15:41:13

标签: java arrays command-line

我正在研究如何使用键盘命令行输入并将其放入数组中的Bruce Eckel练习。它应该采用3个独立的输入并将它们放入一个数组并打印出来。

这是我到目前为止的代码:

//: object/PushtoArray
import java.io.*;
import java.util.*; 
class PushtoArray { 
    public static void main(String[] args) { 
    String[] s = new String[3]; 
    int i = 0; 

    //initialize console 
    Console c = System.console();   

    while ( i <= 2 ) {
        //prompt entry:
        //System.out.println("Enter entry #" + i + ": ");  
        //readin 
            s[i] = c.readLine("enter entry #" + i + ": "); 

        //increment counter 
        i++;                

    } //end while 

    //reset counter 
    i = 0; 

    //print out array
    while ( i <= 2 ) { 
        System.out.println(s[i]);
            i++;
    } //end while 
    }//end main

} //end class

更新:现在我收到了另一个错误:

PushtoArray.java:15: readline(boolean) in java.io.Console cannot be applied to (java.lang.string) 
      s[i]= c.readline("Enter entry #" + i + ": ");

我正在尝试从命令提示符读入,但它根本没有提示。当我javac java文件时它正确编译。

我使用了错误的功能吗?我应该使用推送方法而不是分配吗?

4 个答案:

答案 0 :(得分:4)

您确定在正确的文件上运行javac吗?该文件无法编译。

  1. 您需要在import语句中使用分号:

    import java.io.*;
    
  2. 你忘记了一个结束支柱:

    } // end main()
    
  3. 没有readline()这样的方法。您需要阅读System.in。最简单的方法是在循环之前创建Scanner,然后在循环中读取它。有关示例,请参阅Javadocs Scanner

  4. 修改:有关从命令行读取的详细信息,请参阅Java TutorialsConsole class(在Java 6中引入)看起来像是你想要的readLine()方法。

    编辑2:您需要将Line大写。你写了“readline”,但它应该是“readLine”。

答案 1 :(得分:1)

尝试

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

然后在你的循环中:

in.readline();

我会将接收的行推送到ArrayList或类似的。这样你就可以接受更多/少于3行的数据(但只有当你想接受的行数是可变的时才需要这样做)

编辑:我原本认为NoSuchMethod异常突出了一个范围问题。显然不是,而且那些指出来的人也是如此!

答案 2 :(得分:1)

//print out array
    while ( i < 2 ) { 
        System.out.println(s[i]);
        i++; //increase counter!
    } //end while 

答案 3 :(得分:1)

这可能不是你想要的,但它需要三个命令行参数,将它们存储到一个数组中,然后打印出来自新数组的参数:

public class CommandArray {

    public static void main (String[] args){

        //Set up array to hold command line values
        String[] arr = new String[3];

        //Copy command line values into new array
        for(int i = 0;i < 3;i++)
            arr[i] = args[i];

        //Print command line values from new array
        for(int j = 0; j < 3; j++)
            System.out.print(arr[j] + " ");

            //Extra line for terminal
            System.out.println();
    }
}

然后,在使用javac CommandArray.java编译代码后,您可以使用java CommandArray Arg1 Arg2 Arg3执行代码。

另外,我注意到,在最后的while循环中,你有:

while(i < 2) {

如果命令行接受3个参数,则只打印2.打印的数组索引将为0和1,因为1&lt;你可以改成它来说:

while(i <= 2) {

不要忘记增加我。