在我的情况下如何从字符串中获取整数?

时间:2013-12-07 09:47:51

标签: java

短篇小说:我生成随机数字和结束符号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]并用文件中的下一行填充它。

4 个答案:

答案 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());