根据我正在处理的作业提出了一个简单的问题。
我在文本文件中有这样的数字列表:
5, 8, 14
7, 4, 2
我需要将它们插入到数组中
joe[5][8] = 14;
joe[7][4] = 2;
无法完成任务,感谢任何能够帮助我的人。
- 编辑 -
这是我现在的代码
File f = new File("solution.txt");
Scanner sc = new Scanner(f);
while(sc.hasNextLine())
{
if(sc.hasNextInt())
x = sc.nextInt();
if(sc.hasNextInt())
y = sc.nextInt();
if(sc.hasNextInt())
joe[x][y] = sc.nextInt();
}
答案 0 :(得分:1)
尝试实例化一个二维数组,然后读取每一行,然后读取每一行中的三个数字。使用前2个数字作为数组索引,使用最后一个数字作为值。
一些示例代码
int[][] numbers = new int[1000][1000];
File fin = new File("filename");
BufferedReader br = new BufferedReader(new FileReader(fin));
String line = null;
while ((line = br.readLine()) != null) {
String tokens[] = line.split(", ");
int numberOne = Integer.parseInt(tokens[0]);
int numberTwo = Integer.parseInt(tokens[1]);
int numberThree = Integer.parseInt(tokens[2]);
numbers[numberOne][numberTwo] = numberThree;
}
答案 1 :(得分:1)
使用方法split
将整行划分为一个String数组,如下所示。然后获取String数组的每个元素,并使用方法int
将其转换为Integer.parseInt( )
。您的代码应该类似于:
File f = new File("solution.txt");
Scanner sc = new Scanner(f);
while(sc.hasNextLine())
{
String line = sc.nextLine();
String[] number = line.split(", ");
int x = Integer.parseInt(number[0]);
int y = Integer.parseInt(number[1]);
joe[x][y] = Integer.parseInt(number[2]);
}
答案 2 :(得分:0)
您必须将,
指定为分隔符。
试试这个:sc.useDelimiter("[,]+");
然后你的代码是:
File f = new File("solution.txt");
Scanner sc = new Scanner(f);
sc.useDelimiter("[,]+");
while(sc.hasNextLine())
{
if(sc.hasNextInt())
x = sc.nextInt();
else {}
if(sc.hasNextInt())
y = sc.nextInt();
else{}
if(sc.hasNextInt())
joe[x][y] = sc.nextInt();
}
答案 3 :(得分:0)
这可能不是最有效的方法,但它允许未知的阵列插入。
public int[][] loadArray(String file) {
File fin = new File(file);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(fin));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int width = 1;
int[][] numbers = new int[1][1];
String text = null;
try {
while ((text = br.readLine()) != null) {
String i[] = text.split(", ");
int a = Integer.parseInt(i[0]);
int b = Integer.parseInt(i[1]);
if (a > numbers.length) numbers = new int[a][width];
if (b > width) {
numbers = new int[numbers.length][b];
width = b;
}
numbers[a][b] = Integer.parseInt(i[2]);
}
} catch (NumberFormatException | IOException e) {
e.printStackTrace();
}
return numbers;
}