InputMismatchException для 2D-массива
Проверьте комментарии ниже.
Я использовал...
Scanner input = new Scanner("rates.txt");
Следует использовать...
Scanner input = new Scanner(new File("rates.txt"));
3 ответа
Используйте читатель вместо сканера.
BufferedReader br = new BufferedReader(new FileReader("rates.txt"));
String line;
while ((line = br.readLine()) != null) {
// parse line here . . .
}
Измените его, как показано ниже: в вашем коде
Scanner input = new Scanner("rates.txt");
должно быть:
Scanner input = new Scanner(new File("rates.txt"));
Держите его внутри try-catch или добавьте throws Exception в основной метод.
Также укажите полный путь к файлу, если он не найден.
Когда вы передаете String конструктору Scanner, вы сообщаете ему, что входные данные будут поступать из самой String. Вы должны использовать объект File или что-то подобное. Это:
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class TestFile
{
public static void main(String[] args)
{
Scanner input = null;
try
{
input = new Scanner(new File("rates.txt"));
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
int numRows = 7;
int numColumns = 7;
Double[][] ratesArray = new Double[numRows][numColumns];
while(input.hasNext())
{
for(int i = 0; i < ratesArray.length; i++)
{
for(int j = 0; j < ratesArray[i].length; j++)
{
ratesArray[i][j] = input.nextDouble();
System.out.print(ratesArray[i][j] + "\t");
} // for j
System.out.print("\n");
} // for i
} // while
input.close();
} // main()
} // class TestFile