0

BufferedReader を使用してファイルを読み取る必要があります。2 行目には、常に 2 つの整数があることがわかっています。たとえば、456 666 です。しかし、桁数がわからないので、BufferedReader で行 (String 型) を抽出した後、その文字列の char ごとに読み取り、桁を取得し、それらを char の配列に追加します。すべての数字を取得したら、配列に「\0」を入力します。例:

array[0] = '4'
array[1] = '5'
array[2] = '6'
array[3] = '\0'
array[4] = '\0'
and so on

今、私はこの配列を整数に変えたいと思っています。最初にこの配列を文字列にキャストし、その後 Integer.parseInt を適用しようとしましたが、うまくいきません。この問題を解決する方法がわかりません。助けはありますか?

4

8 に答える 8

2

行だけを読んで、それをintとして解析しようとするとどうなりますか。整数かどうかわからないので、例外を使用して処理します。

String[] nextLine = reader.nextLine().split("\\s+") ;
Integer[] integer = new Integer[nextLine.length()] ;
try
{
  for(int i=0; i < nextLine.length();i++)  
   integer[i] = Integer.parseInt(nextLine[i]) ;
}
catch(NumberFormatException exception)
{
  exception.printStackTrace();
}  
于 2012-10-18T19:50:24.810 に答える
2

配列を文字列にキャストすることはできません...ただし、の代わりにスペースをフィラーとして使用する場合は\0、次のようにできます。

int i = Integer.parseInt(String.valueOf(array).trim());

コメントについて-かっこいい、trim()末尾0x0も削除します:

public static void main(final String[] args) {
    char[] chars = new char[5];
    chars[2] = '9';
    System.out.printf("Original length: %d%n",String.valueOf(chars).length());
    System.out.printf("Trimmed length:  %d%n",String.valueOf(chars).trim().length());
    System.out.printf("Parsed:          %d%n",Integer.parseInt(String.valueOf(chars).trim()));
}
于 2012-10-18T19:54:16.150 に答える
2

代わりに使用することを強くお勧めしScannerます。ドキュメントから:

正規表現を使用してプリミティブ型と文字列を解析できる単純なテキスト スキャナー。Scanner は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。結果のトークンは、さまざまな next メソッドを使用して、さまざまな型の値に変換できます。

Aはデフォルトの区切り文字として空白を使用するため、予想される整数トークンごとScannerに単純に呼び出すことができるはずです。sc.nextInt()使用例はリンク先のページをご覧ください。

于 2012-10-18T19:51:41.110 に答える
1

を使用したほうがよいでしょうScanner

Scanner input = new Scanner(new File("myfile.txt"));
int first  = input.nextInt();
int second = input.nextInt();
于 2012-10-18T19:53:21.487 に答える
1

あなたのchar配列であると仮定するarrayと、これはあなたの仕事をするはずです:

String str = "";
for (char c : array)
    str += c;

int result = Integer.parseInt(str);
于 2012-10-18T19:52:28.677 に答える
0
    // Assume an initial size of the array
    char array[] = new char[5];
    array[0] = '4';
    array[1] = '5';
    array[2] = '6';
    array[3] = '\0';
    array[4] = '\0';


    StringBuffer buffer = new StringBuffer();

    for (int i = 0; i < array.length && array[i] != '\0'; i++){
        buffer.append(array[i]);
    }

    int myInteger = Integer.parseInt(buffer.toString());

最初に文字列を作成してから整数に解析する場合は、主に StringBuffer を使用することをお勧めします。これは、Java の文字列は不変であるためです (特定の文字を変更することはできません)。StringBuffer を使用する場合、新しく作成されたオブジェクトに toString メソッドを適用してから Integer.parseInt を使用することで、この問題を回避できます。

于 2012-10-18T20:03:30.250 に答える
0

わかりました、単にその配列を文字から整数に変換したい場合は、次のようにします。

char 配列[] = 新しい char[5];

    array[0] = '4';
    array[1] = '5';
    array[2] = '6';
    array[3] = '\0';
    array[4] = '\0';

    String newString = String.copyValueOf(array);
    newString = newString.replace("\0", "");

    int newInt = Integer.parseInt(newString);

    System.out.println(array);
    System.out.println(newInt);

上記のコードはテストおよび検証済みです。

于 2012-10-18T20:12:04.430 に答える
0

public String(char[] letters)次にString コンストラクターを使用しInteger.parseInt(...)ます。

于 2012-10-19T06:09:13.490 に答える