And*_*llo 1 java java.util.scanner
编辑:搞清楚,错放了一段代码
我有一个程序,可以从文件中计算斜率.文件所在的格式如下:
Y2'空间'Y1'空间'X2'空间'X1'空间'
我正在使用扫描仪从文件中读取字符串,然后将它们转换为double或整数.我这样做的原因是因为它似乎不会从文本文件只读取字符串中的双精度或整数.这是我的一些代码:
modelSlopes.clear();
modelValues.clear();
int returnVal = openFileChooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = openFileChooser.getSelectedFile();
try {
Scanner fileScanner = new Scanner(new FileReader(file));
int count = 1;
boolean suc = true;
while (fileScanner.hasNext()) {
suc = true;
double tmp1 = 0;
double tmp2 = 0;
double tmp3 = 0;
double tmp4 = 0;
try {
if(count == 1) {
tmp1 = Double.valueOf(fileScanner.next());
}
if(count == 2) {
tmp2 = Double.valueOf(fileScanner.next());
}
if(count == 3) {
tmp3 = Double.valueOf(fileScanner.next());
}
if(count == 4) {
tmp4 = Double.valueOf(fileScanner.next());
}
} catch (NumberFormatException e) {
try {
if(count == 1) {
tmp1 = Integer.valueOf(fileScanner.next());
}
if(count == 2) {
tmp2 = Integer.valueOf(fileScanner.next());
}
if(count == 3) {
tmp3 = Integer.valueOf(fileScanner.next());
}
if(count == 4) {
tmp4 = Integer.valueOf(fileScanner.next());
}
} catch(NumberFormatException e1) {
suc = false;
}
}
if(suc) {
if(count != 4) {
count++;
}
if(count == 4) {
count = 1;
SlopeSolver tmpS = new SlopeSolver(Double.valueOf(tmp1), Double.valueOf(tmp2), Double.valueOf(tmp3), Double.valueOf(tmp4));
modelSlopes.addElement(tmpS.getSlope());
modelValues.addElement("Y2 - " + String.valueOf(tmp1) + "; Y1 - " + String.valueOf(tmp2) + "; X2 - " + String.valueOf(tmp3) + "; X1 - " + String.valueOf(tmp4));
}
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error opening or with file");
}
} else {
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它显示斜率和值的0.我似乎无法让它发挥作用.我是java新手,现在我很无能为力.任何帮助,将不胜感激.
这是我正在读取数据的文本文件:
0.0 2.0 0.0 1.0
Run Code Online (Sandbox Code Playgroud)
安德鲁〜
我会简化代码
Scanner sc = new Scanner(new FileReader(file));
SlopeSolver ss = new SlopeSolver(sc.nextDouble(),
sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
sc.close();
Run Code Online (Sandbox Code Playgroud)