我正在编写一个方法来检查传入我的可实例化类的构造函数的文本文件是否包含非数字数据。具体而言,重要的是数据不能表示为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();
}
答案 0 :(得分: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