Java 将命令行输入转换为数组
我正在做一个Bruce Eckel练习,学习如何获取键盘命令行输入并将其放入数组。它应该获得3个独立的输入,并将它们放入一个数组中,然后将它们打印出来 以下是我目前掌握的代码:Java 将命令行输入转换为数组,java,arrays,command-line,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];
//: 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
我试图从命令提示符中读取,但它根本没有提示。当我对java文件进行javac时,它可以正确编译
我是否使用了错误的函数?我应该使用推送方法而不是赋值吗?您确定在正确的文件上运行了
javac
?该文件无法编译
import java.io.*;
} // end main()
readline()
这样的方法。您需要从系统中读取。最简单的方法是在循环之前制作一个扫描仪
,然后在循环中读取。有关示例,请参见JavadocsreadLine()
方法
编辑2:您需要将行大写。你写了“readline
”,但应该是“readline
”试试看
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
然后在你的循环中:
in.readline();
我会将收到的行推送到ArrayList或类似的列表中。这样,您可以接受多于/少于3行的数据(但只有在要接受的行数可变时才需要)
编辑:我原以为NoSuchMethod异常突出了一个范围问题。显然不是,thx给那些指出这一点的人 //打印输出数组
//print out array
while ( i < 2 ) {
System.out.println(s[i]);
i++; //increase counter!
} //end while
而(i<2){
系统输出打印项数(s[i]);
i++;//增加计数器!
}//结束时
这可能不是您想要的,但它需要三个命令行参数,将它们存储到一个数组中,然后从新数组中打印出参数:
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();
}
}
如果命令行接受3个参数,则只打印2个。打印的数组索引将是0和1,因为1小于2。您可以将其更改为:
while(i <= 2) {
while(你的readline方法从哪里来?你定义了它吗?这段代码是否与产生错误的代码相匹配。上面的错误表明你没有找到你的main方法,因此正确定义了它(它确实出现在上面)@phill:你看到我的第二次编辑了吗?@mmyers是的,我看到了..谢谢..这让它开始提示输入你仍然需要更改上次while循环中的条件到我你说的是什么javac
通过java.io>DataInput>string readline()方法。我想这是不正确的。哦,哦…从最后的评论来看,我认为这里有更深层次的问题。是的,逻辑错误比语法错误更糟糕。(for循环会更好。)你能详细说明一下你是如何在api中找到这个的吗?有没有一个更简单的搜索功能?有没有比在api中找到你需要的功能更简单的方法?啊,恐怕是经验。知道System.in是输入流,你必须将它包装在读卡器中才能转换为字符,然后BufferedReader交付您可以从搜索“java readline”开始,这是一个很好的捕获。感谢您指出条件语句
while(i < 2) {
while(i <= 2) {