我对Java很陌生;我将如何读取文件,然后在某个索引中存储整数?
所以这是文件:
17 15 27 7 19 4 29 101 22 29 14 6 14 89 22 47 28 28 29 69 2 27 28 18 7 10 19 90 13 55 18 96 5 7 6 32 26 51 25 65 29 54 14 79 4 17 5 59 20 6 0 55 5 38
我希望将它们作为成对读取,其中第一个数字是索引,第二个数字是要存储在索引中的数字。
array[17] = 15
array[27] = 7
array[19] = 4
依此类推,直到文件没有更多的整数来阅读
更新
另外,如果它有所不同,我有一个2D数组将其存储到
答案 0 :(得分:0)
首先将输入作为字符串,然后使用string.split(" ")
将其拆分为数组。然后使用Integer.parseInt()
将数组中的每个值转换为相应的整数值,将名称数组转换为A
。
创建一个大小等于的整数数组B
(数组A
中偶数位置的最大值+ 1)。然后Ans再次遍历数组A
以将值设置在相应的位置。
答案 1 :(得分:0)
实现这一目标的几种方法。
我总是喜欢的一种不错的方法是使用Properties类。添加了一个片段,以显示该类的工作原理。 :)如果您有任何疑问,请告诉我。
public void writeToProp(){
Properties defaultProperties = new Properties();
defaultProperties.setProperty("17", "15");
defaultProperties.setProperty("27", "7");
defaultProperties.setProperty("19", "4");
try (FileOutputStream stream = new FileOutputStream(PATH_TO_SAVE_YOUR_FILE)) {
defaultProperties.store(stream, null);
stream.close();
} catch (Exception ex) {
ex.toString();
}
}
public Properties readFromProp(){
Properties prop = new Properties();
InputStream stream = null;
try {
stream = new FileInputStream(PATH_TO_SAVE_YOUR_FILE);
prop.load(stream);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void getValue(String key,String value, Properties properties) {
properties.setProperty(key, value);
}
public String setValue(String key, Properties properties) {
return properties.getProperty(key);
}
答案 2 :(得分:0)
您可以使用此简单代码段
int array[] = new int[SIZE];
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
String[] split = line.trim().split(" ");
for(int i = 0; i+1 < split.length; i++){
array[Integer.parseInt(split[i])] = Integer.parseInt(split[i+1]);
}
}
}
对于2D数组,
int array[][] = new int[SIZE][];
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
String[] split = line.trim().split(" ");
for(int i = 0; i+2 < split.length; i++){
int j = Integer.parseInt(split[i]);
int k = Integer.parseInt(split[i + 1]);
int l = Integer.parseInt(split[i + 2]);
array[j][k] = l;
}
}
}
答案 3 :(得分:-1)
您也可以使用扫描仪阅读文件。
Scanner sc = new Scanner(new File("nums.txt"));
然后运行while循环运行,直到文档不再存在。像:
public class ReadNums {
public static void main(String[] args) {
Scanner sc = new Scanner(new File("nums.txt"));
int[][] A = new int[160][30];
while (sc.hasNext()) {
String s = sc.readNext();
String s2 = sc.readNext();
int num1 = Integer.parseInt(s);
int num2 = Integer.parseInt(s);
A[num1][num2];
}
}
}