0
我有代碼。有些名字是波蘭語,但我認爲這不是問題。 在此代碼中,我創建隨機填充的數組,將其寫入.txt文件,然後使用從此文件讀取的數據創建另一個數組。不幸的是,在靜態方法hasNextDouble()方法返回false,我的數組填充0.0。爲什麼?如果我通過記事本打開這個.txt文件,它包含可以讀取的雙打。問題在哪裏?掃描儀爲什麼說沒有雙倍退回?
package algorytmyz1;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.Random;
import java.util.Scanner;
class Tablica {
private int w;
private int k;
private double[][] tab;
//konstruktor
public Tablica(int w,int k) {
this.w = w;
this.k = k;
tab = new double[w][k];
Wypelnij();
Zapisz();
}
//wypelnia macierz liczbami od 0 do 9
private void Wypelnij(){
Random rand = new Random();
for(int i=0; i<w; i++)
for(int j=0; j<k; j++)
//generuje pseudolosowe liczby rzeczywiste między 0 a 10
tab[i][j]=rand.nextDouble() * 10;
}
private void Zapisz() {
try (PrintWriter fout = new PrintWriter("macierz1.txt"))
{
fout.println("Macierz:");
fout.println(w);
fout.println(k);
for (int i=0; i<w; i++)
{
for (int j=0; j<k; j++)
{
fout.print(tab[i][j] + " ");
}
fout.println();
}
}
catch (IOException e) {
System.out.println("Błąd wejścia/wyjścia.");
}
}
}
public class AlgorytmyZ1 {
public static void main(String[] args) throws FileNotFoundException {
int w,k;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//wprowadzenie liczby wierszy i kolumn macierzy
try {
System.out.println("Podaj liczbę wierszy:");
w = Integer.parseInt(br.readLine());
System.out.println("Podaj liczbę kolumn:");
k = Integer.parseInt(br.readLine());
Tablica macierz = new Tablica(w,k);
}
catch (IOException e) {
System.out.println(e);
}
WczytajWyswietl();
}
public static void WczytajWyswietl() throws FileNotFoundException {
int w, k;
String naglowek;
double[][] tablica;
File file = new File("macierz1.txt");
Scanner fin = new Scanner(file);
naglowek = fin.nextLine();
w = Integer.parseInt(fin.nextLine());
k = Integer.parseInt(fin.nextLine());
tablica = new double[w][k];
while (fin.hasNextDouble())
{
for (int i=0; i<w; i++)
{
for (int j=0; j<k; j++)
tablica[i][j] = fin.nextDouble();
}
}
System.out.println(naglowek);
System.out.println("Liczba wierszy: " + w);
System.out.println("Liczba kolumn: " + k);
for (int i = 0; i<w; i++)
{
for (int j=0; j<k; j++)
{
System.out.print(tablica[i][j] + " ");
}
System.out.println();
}
}
}