java:从txt文件中读数据到数组中。

2024年11月16日 13:48
有2个网友回答
网友(1):

package guoqing03;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class TxtToArray {
public static void main(String[] args) {
//根据城市id,来获得相应的数组,你可以通过改变id来获得不同的数组
int id = 2;
int[] city = getCityLocation(id);
System.out.println(Arrays.toString(city));
}

/**
* @param id 传入一个城市id,指代需要查询的是那个城市
* @return int[] 返回一个数组 如 [2, 489, 537]
*/
public static int[] getCityLocation(int id) {
//大家都懂的我方法全是用的静态方法,获得包含所有城市数据的一个数组
int[] citys = getAllCitys();
int[] city = new int[3];
int j = 0;
//根据用户的id来获取不同城市的数组并返回
for(int i=id*3-3; i<3*id; i++) {
city[j] = citys[i];
j++;
}
return city;
}

/**
* @return 返回包换全部城市的一个数组
*/
public static int[] getAllCitys() {
//“city.txt”我是放在当前项目下面的,要是你不要包名呢,直接放到你的当前目录下面就OK了
File file = new File("citys.txt");
//定义一个数据流管道哈
BufferedReader read = null;
//StringBuffer嘛 是一个很常用到的方法,给String一样,只是
//这个东西拼接字符串速度比较快,效率高
StringBuffer strbuf = new StringBuffer("");
String str = "";
try {
read = new BufferedReader(
new InputStreamReader(
new FileInputStream(file)));
if((str = read.readLine()) != null) {
//字符串拼接,你懂的
strbuf.append(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//将StringBuffer类型转换成String类型
String strbuf2 = new String(strbuf);
//利用正则表达式将String撇开成一个Sring数组
String[] strCitys = strbuf2.split("\\s+");
int[] citys = new int[strCitys.length];
//将String数组转换成int数组
for(int i=0; i String strCity = strCitys[i];
citys[i] = Integer.parseInt(strCity);
}
return citys;
}
//程序缺陷:1.没有实现人机交互,不过也没必要
// 2.没有对用户的id值进行判断,是否符合要求,超出范围程序会出
// java.lang.ArrayIndexOutOfBoundsException的异常
}

网友(2):

public static void main(String[]args) {
//load file to str
String[]std=str.split("\\s");
for(int i=0;i int[]d=new int[3];
d[0]=Integer.parseInt(std[0]);
d[1]=Integer.parseInt(std[1]);
d[2]=Integer.parseInt(std[2]);
//add list
}