2016-12-11 5 views
0

ファイルを行単位で読み込み、フォーマットする方法がわかりません。大きな問題は、「人」に「番号」を割り当てたテキストファイルがあることです。最初の数字は "001"です。私がそれを読むと、それは "1"として保存されます。それは私の数字のすべての先行ゼロで同じことをします。 「002」は「2」になり、「030」は「30」になります。それぞれの数字は3桁で、私はそれをそのまま保持したい。ここでJava:テキストファイルの読み込みと書式設定中に先行ゼロを維持する

は、私は、ファイルから読み取ったコードのビットは次のとおりです。

do { 
    next = Breader.readLine(); 
    sNumber = Integer.parseInt(next); 
    nameArray.add(sNumber); 
    sName = Breader.readLine(); 
    nameArray.add(sName); 
    end = Breader.ready(); 
} while(end); 

それはInteger.parseInt();機能で何かでなければなりません。

import java.io.*; 
import java.util.Scanner; 
import java.util.ArrayList; 

public class FinalProgram { 
    public static void main(String[] args) IOException { 
     nameReader(); 
    } 

    private static void nameReader() throws IOException { 
     String nameFile = " "; 
     String next = " "; 
     int sNumber = 0; 
     String sName = " "; 
     Scanner input = new Scanner(System.in); 
     ArrayList nameArray = new ArrayList(); 

     try { 
      System.out.print("Enter the Name file(c:filename.txt): "); 
      nameFile = input.nextLine(); 
     } catch(IllegalArgumentException e) { 
      System.out.printf("Invalid input. Please enter" 
        + " filename in the form of " 
        + "c:filename.txt\n", e.getMessage()); 
     } 

     //Instantiate FileReader and BufferedReader 
     FileReader freader = new FileReader(nameFile); 
     BufferedReader Breader = new BufferedReader(freader); 
     boolean end = Breader.ready(); 

     do { 
      next = Breader.readLine(); 
      sNumber = Integer.parseInt(next); 
      nameArray.add(sNumber); 
      sName = Breader.readLine(); 
      nameArray.add(sName); 
      end = Breader.ready(); 
     } while(end); 

     System.out.print(nameArray); 
    } 
} 

答えて

1

あなたはint sNumber = Integer.parseInt(next);のように整数に文字列を解析する場合には、先行ゼロは整数で先行ゼロを持っていないので、それは余計である、無視されます。なぜゼロを格納する必要がありますか?30の代わりに030を書きますか? 1、2、10のどれくらいの数のゼロを格納する必要がありますか? 003003030をどうやって比較すれば同じですか?

フォーマットの文字列としての意味は、整数は決して先行ゼロで格納されません。あなたはString.format(...);を使用することによって、そうすることができます。

int yourInteger = 30; 
String formattedNumber = String.format("%03d", yourInteger); 

// Prints 30 as 030 
System.out.println(formattedNumber); 

フォーマット文字列"%03d"を意味します、整数を出力し、少なくとも3桁の数字を印刷して、以下の3つの数字がある場合は、先行ゼロでパッドにそれらを。したがって、30は、030,5として0053000として3000と表示されます。これは3桁を超えているためです。

さらに一般的な数値の書式設定方法は、NumberFormatです。

+0

私はこれが好きですが、どのようにファイルから読み込み、それを整数にすることができますか? Integer.parseInt(n);を使用しようとすると、エラーが発生します。 次= Breader.readLine(); sNumber = Integer.parseInt(next); nameArray.add(sNumber); –

+0

私はこれを試しました: next = Breader.readLine();sNumber = Integer.parseInt(nf.format(Breader.readLine())); しかし、それは私にエラーを与えます:java.lang.IllegalArgumentException:指定されたオブジェクトを数値としてフォーマットできません –

+0

!あなたが何を意味するのか分からなかっただけです。私はarraylistに格納する前に、私はString.formatを使用し、それはうまくいきます。ありがとうございました。 –

1

Each number has three digits and I want to keep it that way.

その後、あなたは文字列変数にそれを読んでする必要があります。

または処理するためにint値に変換する必要がある場合は、値を表示するときに、出力文字列の書式設定にはNumberFormatを使用する必要があります。例えば

NumberFormat nf = NumberFormat.getIntegerInstance(); 
nf.setMinimumIntegerDigits(3); 
int value = 1; 
System.out.println(nf.format(value)); 
+0

大きな助け!ありがとうございました。 –

+0

@JonathanDewein、喜んで助けました。チェックマークをクリックして回答を「受け入れる」ことを忘れないでください。人々は問題が解決されたことを知ります。 – camickr

関連する問題