import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collection;
public class Challenge16 {
public static void main(String [] args)
{
try {
FileReader file = new FileReader("C:/Users/Mo/Desktop/Challenge16.txt");
BufferedReader reader = new BufferedReader(file);
String text = "";
String line = reader.readLine();// readLine reads line after line of the stream given aka "file"
ArrayList<String> textArr = new ArrayList<String>();
while(line!=null)
{
//text = text + "\n" + line;
textArr.add(line);
line = reader.readLine();
}
//System.out.println(textArr.get(0));
ArrayList<Integer> numArr = new ArrayList<Integer>();
for(String number : textArr)
{
numArr.add(Integer.parseInt(number));
}
}catch(Exception e){
System.out.println("File not found");
}
}
}
我到目前为止,文件有13行,第一个数字是12,表示后面有多少行。下一行和后面的行有随机数字,如12 34 123 453,它们不一致,有些行只有2个数字,如15 23,基本上我想把它加起来。
我遇到的问题是将ArrayList从String转换为Integer。当我转换它时,编译器说,当我运行它时,“找不到文件”...为什么会这样说?我已经尝试了十亿种其他方法来修复它,但它总是说,一旦我转换它,就找不到该文件。文件看起来像这样。
12
3621 6076 1329 13501 8180 2960 6567 10251 8663 13215 16302 9248 9848 0
1759 176 1724 226 1560 1162 534 451 0
809 194 412 362 1010 314 589 366 397 408 0
1637 987 199 1241 977 1355 424 1575 226 134 1751 1950 359 1262 0
1712 71 1571 1281 458 345 2004 430 973 1132 0
15578 6926 7053 12286 14821 8639 5824 6249 3089 9210 2460 0
20 1027 3287 2543 3152 977 1871 3293 0
7 45 16 61 166 0
4183 4614 1852 7709 2565 1070 3837 5477 4194 5381 1890 0
14057 10925 3379 10820 4710 15986 14725 12191 12773 14806 13527 13220 0
716 11885 8157 13877 3866 0
46 96 53 166 11 0
^它在实际文件中的所有单个间距
答案 0 :(得分:0)
你确定你应该在文件路径中使用/而不是\吗?当我尝试使用C读取文件时遇到类似的问题。
答案 1 :(得分:0)
这是一个经过测试的工作样本:
public static void main(String [] args)
{
try {
FileReader file = new FileReader("/var/www/alpha/src/alpha/Challenge16.txt");
BufferedReader reader = new BufferedReader(file);
String text = "";
String line = reader.readLine();// readLine reads line after line of the stream given aka "file"
ArrayList<String> textArr = new ArrayList<String>();
while(line!=null)
{
//text = text + "\n" + line;
textArr.add(line);
line = reader.readLine();
}
//System.out.println(textArr.get(0));
ArrayList<Integer> numArr = new ArrayList<Integer>();
for(String number : textArr)
{
for(String num: number.split(",")){
if(num != null)
numArr.add(Integer.parseInt(num));
}
}
for(Integer x : numArr)
System.out.println(x);
}catch (NumberFormatException e) {
System.out.println("error "+ e.getMessage());
}catch(Exception e){
System.out.println("File not found \n");
}
}
}
假设你的输入文件如:
12 3621,6076,1329,13501,8180,2960,6567,10251,8663,13215,16302,9248,9848,0 1759,176,1724,226,1560,1162,534,451,0 809,194,412,362,1010,314,589,366,397,408,0 1637,987,199,1241,977,1355,424,1575,226,134,1751,1950,359,1262,0 1712,71,1571,1281,458,345,2004,430,973,1132,0 15578,6926,7053,12286,14821,8639,5824,6249,3089,9210,2460,0 20,1027,3287,2543,3152,977,1871,3293,0 7,45,16,61,166,0 4183,4614,1852,7709,2565,1070,3837,5477,4194,5381,1890,0 14057,10925,3379,10820,4710,15986,14725,12191,12773,14806,13527,13220,0 716,11885,8157,13877,3866,0 46,96,53,166,11,0
输出:
12 3621 6076 1329 13501 8180 2960 6567 10251 8663 13215 16302 9248 9848 0 1759 176 1724 226 1560 1162 534 451 0 809 194 412 362 1010 314 589 366 397 408 0 1637 987 199 1241 977 1355 424 1575 226 134 1751 1950年 359 1262 0 1712 71 1571 1281 458 345 2004年 430 973 1132 0 15578 6926 7053 12286 14821 8639 5824 6249 3089 9210 2460 0 20 1027 3287 2543 3152 977 1871年 3293 0 7 45 16 61 166 0 4183 4614 1852年 7709 2565 1070 3837 5477 4194 5381 1890年 0 14057 10925 3379 10820 4710 15986 14725 12191 12773 14806 13527 13220 0 716 11885 8157 13877 3866 0 46 96 53 166 11 0