0

インスタンス化可能なクラスのコンストラクターに渡されるテキスト ファイルに数値以外のデータが含まれているかどうかを確認するメソッドを作成しています。具体的には、データを double として表現できないかどうかが問題になります。つまり、文字は問題ありませんが、整数は問題ありません。

私がこれまでに持っているものは次のとおりです。

private boolean nonNumeric(double[][] grid) throws Exception {
    boolean isNonNumeric = false;

    for (int i = 0; i < grid.length; i++)
        for (int j = 0; j < grid[i].length; j++) {
            if (grid[i][j] !=  ) {
                isNonNumeric = true;
                throw new ParseException(null, 0);
            } else {
                isNonNumeric = false;
            }
        }
    return isNonNumeric;
}

grid[i][j] の現在のインデックスをチェックする必要があるものを見つけることができないようです。私が理解しているように、 typeOf はオブジェクトでのみ機能します。

何かご意見は?ありがとうございました。

編集: double[][] グリッドの作成に使用されるコードは次のとおりです。

// Create a 2D array with the numbers found from first line of text
    // file.
    grid = new double[(int) row][(int) col]; // Casting to integers since
                                                // the dimensions of the
                                                // grid must be whole
                                                // numbers.

    // Use nested for loops to populate the 2D array
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++) {
            if (scan.hasNext()) {
                grid[i][j] = scan.nextDouble();
                count++;
            }
        }

    // Check and see if the rows and columns multiply to total values
    if (row * col != count) {
        throw new DataFormatException();
    }
4

1 に答える 1

3

このサンプルを思いついたので、お役に立てば幸いです。

エントリのタイプを探しているタイプに絞り込むのに役立ちます。

私のentry.txtには次のものが含まれます:

. ... 1.7 i am book 1.1 2.21 2 3222 2.9999 yellow 1-1 izak. izak, izak? .. -1.9

私のコード:

public class ReadingJustDouble {

  public static void main(String[] args) {

    File f = new File("C:\\Users\\Izak\\Documents\\NetBeansProjects"
            + "\\ReadingJustString\\src\\readingjuststring\\entry.txt");
    try (Scanner input = new Scanner(f);) {
        while (input.hasNext()) {
            String s = input.next();
            if (isDouble(s) && s.contains(".")) {
                System.out.println(Double.parseDouble(s));
            } else {
            }
        }
    } catch (Exception e) {

    }
}

public static boolean isDouble(String str) {
    double d = 0.0;
    try {
        d = Double.parseDouble(str);
        return true;
    } catch (NumberFormatException nfe) {
        return false;
    }
 }

}

出力:

1.7
1.1
2.21
2.9999
-1.9

注:私の情報源は次のとおりです

1. http://www.tutorialspoint.com/java/lang/string_contains.htm

2.Javaで文字列が数値かどうかを確認する方法

于 2014-06-17T01:54:48.753 に答える