小编典典

java:如何使用.txt中的数据创建多个数组

java

所以这是我必须编写的第一个真正的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]);
    }
 }
}

阅读 204

收藏
2020-11-30

共1个答案

小编典典

由于不同的条目由行分隔,请阅读完整的行,然后在空格字符处将其分割,然后将第一个转换为一个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


编辑

当我正确理解您的信息后,您无需执行任何操作,即可StdIn使用进行自动初始化System.in

这意味着StdIn.readLine()将返回输入文件的第一行。您可以使用以下命令读取文件的每一行:

while (StdIn.hasNextLine())
{
    String line = StdIn.readLine();
    // stuff from above
}

要从命令行参数获取x和y,您需要String[] args从main方法访问该参数:

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包含位置数据的文件。

2020-11-30