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
Другие вопросы по тегам