0

我正在编写一个方法来检查传递给我的可实例化类的构造函数的文本文件是否包含非数字数据。具体来说,如果数据不能表示为双精度数,这很重要。也就是说,字符不行,整数可以。

到目前为止,我所拥有的是:

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 回答