-1

それぞれ 3 つの数字を含む複数行のテキスト ファイルがあります。各番号はスペースで区切ります。

    1 1 4.0

ファイルからこの文字列を読み取るときに、最初の 2 つの数値を整数に変換し、最後の数値を double に変換します。どうすればこれを行うことができますか?

4

4 に答える 4

5
String [] numbers = "1 1 4.0".split(" ");
int first = Integer.parseInt(numbers[0]);
int second = Integer.parseInt(numbers[1]);
double third = Double.parseDouble(numbers[2]);

これは、数値が常にその形式であると想定しています。

説明

このStringクラスにはsplit、正規表現を引数として取り、文字列を結果の配列に「分割」するメソッドがあります。次に、オブジェクト ラッパーを使用して、対応する配列値にアクセスし、文字列オブジェクトから適切にキャストすることで、数値を実際の値にする intことができます。double

于 2012-10-27T08:04:53.593 に答える
2
  • 各値を文字列配列の個々の要素として取得するには、最初に文字列をスペースで分割する必要があります。そのために使用する必要がありString#splitます。

  • 次に、配列を反復処理し、各要素について、dot(.).

  • が含まれている場合は、またはを使用しdotて に変換します。doubleDouble#valueOfDouble#parseDouble

  • が含まれていない場合は、またはを使用してdot変換します。integerInteger#valueOfInteger#parseInt

  • intこのアプローチを使用すると、double値が格納される順序を気にする必要がなくなります。

: -

    String str = "21.3";
    if (str.contains(".")) {
        System.out.println(Double.parseDouble(str));
    } else {
        System.out.println(Integer.parseInt(str));
    }

2 つの方法の違いは次のとおりです。

Integer.parseIntを返しますが、primitive intInteger.valueOf返しますInteger wrapper object

于 2012-10-27T08:01:24.697 に答える
0

どうぞ:

    String numberSequence = "1 1 4.0";

    String[] numbers = numberSequence.split(" ");

    for(String no : numbers){
        if(no.contains(".")){
            Double.parseDouble(no);
        }
        else{
            Integer.parseInt(no);
        }
    }
于 2012-10-27T09:03:23.620 に答える
0

次のようなものを試すことができます:

try {
        int posStart    = 0;
        int posEnd      = text.indexOf(" ", posStart);
        int firstNumber = Integer.valueOf(text.substring(posStart, posEnd));

        posStart    = posEnd + 1;
        posEnd      = text.indexOf(" ", posStart);
        int secondNumber = Integer.valueOf(text.substring(posStart, posEnd));

        posStart    = posEnd + 1;
        double thirdNumber = Double.valueOf(text.substring(posStart));

        System.out.println(firstNumber + " / " + secondNumber + " / " + thirdNumber);
    }
    catch (Exception err) {
        System.out.println(err.getMessage());
    }
于 2012-10-27T08:09:01.770 に答える