短篇小说:我生成随机数字和结束符号0-9 /(' /'是行尾符号,如果我遇到它,我会写入下一个文件中的行。)当我生成我的数字并放入文件时,我想从文件中获取这些数字,但不是像字符串那样,它应该是整数。
假设我的文件如下:
846525451454341*
*
0067617354809629733035*
3313449117867514*
02337436891267261671546*
469980603887044*
7*
9*
642*
*
0617044835719095066*
5*
7175887168189821760*
581*
76300152922692817*
正如您所注意到的,线路只能容纳' *'在某些情况下(正如我所说,它是随机生成的)。
我想像整数一样回到这些行。例如,我走1行,直到我遇到结束符号(' /')然后我循环另一行,依此类推。
一些片段:
public void readGeneratedFile() throws IOException {
try(BufferedReader r= new BufferedReader(new FileReader("C:\\java\\numbers.txt"))){
int ch;
s = new String();
while((ch=r.read())!=-1){
s+=String.valueOf(Character.toChars(ch)).replace(" ",""); // Here I take all file into String, But this approach is leading to boilerplate code;
}
// catch IOException , finally close the file.
我怎样才能像整数一样找回那些行? (假设我想对这些数字采取一些行动)如果你知道我想做什么,这很酷。
感谢。
很抱歉误会,这不是我想要的。我想取回分离的值,例如我有123456/564654/21字符串,我的整数数组[1] [索引]应该看起来像1,2,3,4,5,6然后我遇到终点符号& #39; /'我跳转到数组[2] [index]并用文件中的下一行填充它。
答案 0 :(得分:2)
你的字符串越过整数限制,你需要BigInteger
实施例
BigInteger b = new BigInteger("7175887168189821760");
你不能像整数一样把它拿回来,因为它们已超越极限。
答案 1 :(得分:2)
你可以这样试试。也。
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
BigInteger integer;
while (line != null) {
line = line.replace("*","");
integer = new BigInteger(line);
//Your stuf
line = br.readLine();
}
} finally {
br.close();
}
答案 2 :(得分:0)
这将有助于
Integer.parseInt(String)
由于您的值大于Integer可以存储的值,您可以选择
Long.parseLong(String)
另一种方法是使用BigInteger(String)
处理大数字
答案 3 :(得分:0)
使用StringBuilder作为char accumulator(StringBuilder.append()),最后使用
int result = Integer.parseInt(builder.toString());