所以这是我必须编写的第一个真正的Java程序。我对Java也相当陌生。
该程序必须使用2个命令行参数(假定是x和y坐标)运行,然后确定坐标位于哪个城市和县。为此,我想使用一个“卷号”。
但是,在我可以从程序的那些部分开始之前,我首先需要创建并填充不同的数组,对吗?
.txt文件包含以下内容:(所有地点和坐标都在荷兰顺便说一句)ID号县辖市。例如:
0格罗宁根哈伦
1格罗宁根韭菜
对于前518行,等等。接下来的61650行是这样的坐标:
0 6.665039 53.181004
0 6.666431 53.180642
第一个整数(此处为0)与市镇相对应
回到问题。文本文件无法更改,我必须使用cmd中的redirection(?):java’programname’<filename.txt。它应该读取整个文件,创建1个数组,其中的ID号都是整数。一个县和一个市的阵列,对吗?但是,当数据在同一行上时,如何创建3个不同的数组(oke 2、1个整数数组和2个字符串数组)。
我想使用StdIn.readInt,StdIn.readString和StdIn.readLine,但我只是无法使其工作。
在此先感谢您的帮助。
到目前为止,这就是我所拥有的,它给出了错误,因为(我认为是因为这样)它期望读取一个整数,但是同一行上也有字符串。
public class test{ public static void main(String[] args){ int n = 519; Integer[] a = new Integer[n]; for(int i = 0; i < n; i++){ a[i] = StdIn.readInt(); StdOut.println(a[i]); } } }
由于不同的条目由行分隔,请阅读完整的行,然后在空格字符处将其分割,然后将第一个转换为一个int并将其分配给int数组,并将另外两个分配给您的字符串数组:
String line = StdIn.readLine(); String[] split = line.split(" "); intArray[X] = Integer.parseInt(split[0]); stringArray1[X] = split[1]; stringArray2[X] = split[2];
您可以循环执行此操作。
要像读取文件一样java -jar your.jar < inputFile.txt,需要将阅读器的输入流设置为System.in如何执行(或者是否StdIn为您执行),我不知道该文件的来源StdIn。
java -jar your.jar < inputFile.txt
System.in
StdIn
编辑
当我正确理解您的信息后,您无需执行任何操作,即可StdIn使用进行自动初始化System.in。
这意味着StdIn.readLine()将返回输入文件的第一行。您可以使用以下命令读取文件的每一行:
StdIn.readLine()
while (StdIn.hasNextLine()) { String line = StdIn.readLine(); // stuff from above }
要从命令行参数获取x和y,您需要String[] args从main方法访问该参数:
String[] args
int x = Integer.parseInt(args[0]); int y = Integer.parseInt(args[1]);
请注意,我在此处编写的所有代码都不会检查可能发生的任何异常(例如,如果您不输入两个int)。我猜这取决于您的任务(如果它说您可以假定输入正确,则上面的代码应该可以)。
然后,您可以像这样执行Java程序:java -jar your.jar 100 20 < inputFile.txt。其中x的值为100,y的值为20,y的值和inputFile.txt包含位置数据的文件。
java -jar your.jar 100 20 < inputFile.txt