非常に簡単な練習をしていて、コードで間違いを見つけることができません。スキャナを使用して浮動小数点数を.txtから浮動小数点数に変換する
私はこのようになりますテキストファイルを持っている:
230.24415 134.34523 166.47234
192.02849 138.28403 294.12875
198.97356 256.49284 140.41526
最初に(intこの場合は3x3であり、以下の値は、スペースと改行で区切られた小数点以下5桁の浮動小数点数であり、それらを操作するために行列に設定する必要があります。それがこの練習の主な問題です。
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class fileToMatrix {
public static void main(String[] args) throws IOException {
File f = new File("./src/floatMat.txt");
Scanner s = null;
int m=-1;
float value = -0.1f;
try {
s = new Scanner(f);
if(s.hasNextLine()) { // Firstly, read the dimension number
m = s.nextInt();
System.out.println("Dimension of the matrix = " + m + "x" + m);
}
float [][] mat = new float[m][m]; //creates a matrix of dimension m
for(int i=0; i< m; i++){ //and initializes to 0
for(int j=0; j< m; j++){
mat[i][j] = 0.0f;
}
}
if(s.hasNextLine()) {
for(int r=0; r< m; r++){
for(int c=0; c< m; c++){
value = s.nextFloat(); //PROBABLY HERE'S THE MISTAKE!!!!!
mat[r][c] = value; //set value on the current cell of the array
}
}
}
for(int i=0; i< m; i++){ //print the matrix
for(int j=0; j< m; j++){
System.out.print(mat[i][j]+ " ");
}
System.out.println();
}
} catch (Exception ex) {
System.out.println("Message catch: " + ex.getMessage());
} finally {
if (s != null)
s.close();
}
}
}
私の.txtファイルの浮動小数点数を認識しないようですので、私は、ミスがミスを通知する私のコメントの周りにあることを確信している:ここで
コードがあります。実際、もし私の.txtファイルに整数値を入れれば、それはほとんど動作します!!
"Dimension of the matrix = 3x3"だけを出力しますが、 "Message catch:null"と表示され、塗りつぶされた行列も印刷されません。
ありがとうございます、私はあなたの助けに感謝します!あなたは次の行に進めるために、ここでs.nextLine()
を必要とするので、この時点で
'のSystem.out.println( "メッセージキャッチ:"()+ ex.getMessage)置き換える;') 'ex.printStackTrace(とし;'例外が何であるか、それを投げる何行を確認してください。 – Oleg