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();
}
}
}