簡體   English   中英

在這種情況下,如何從字符串中獲取整數?

[英]How can I get integers from strings in my situation?

簡短的故事:我生成隨機數,結束符號為0-9 /(“ /”是行結束符,如果遇到它,我將寫入文件的下一行。)當我生成數字並將其放入文件時,我想要從文件中獲取這些數字,但不是像字符串那樣,應該是Integers。

假設我的文件如下所示:

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字符串,並且我的Integer array [1] [index]應該看起來像1,2,3,4,5,6,那么我遇到了結束線符號' /'我跳到array [2] [index]並用文件的下一行填充它。

您的字符串已超過整數限制,您需要BigInteger

防爆

BigInteger b = new BigInteger("7175887168189821760");

而且您無法像整數一樣將其取回,因為它們已經超出了限制。

您可以這樣嘗試。 也。

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();
    }

這會有所幫助

Integer.parseInt(String)

由於您擁有的值大於整數存儲的值,因此可以使用Long.parseLong(String)

另一種方法是使用BigInteger(String)處理大數

最后將StringBuilder用作字符累加器(StringBuilder.append())

int result = Integer.parseInt(builder.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM