Сканер не улавливает содержимое файла?

1

У меня небольшая проблема/ошибка в моей программе, которая не будет сканировать в содержимом правильно. Я верю, что использую правильную команду? ex: java homework5 hwk5sample1.txt Почему никакое содержимое не сканируется и не хранится в моем ArrayList?

import java.io.*;
import java.util.*;
import java.lang.*;

public class homework5 {

  public static int penny = 1;
  public static int nickle = 5;
  public static int dime = 10;
  public static int quarter = 25;
  public static int halfDollar = 50;
  public static int dollar = 100;
  public static int change;

  public static void main(String[] args)
    throws FileNotFoundException {

    ArrayList<Integer> coinTypes = new ArrayList<Integer>();

    File f = new File (args[0]);
    Scanner input = new Scanner(f);
       while (input.hasNextInt()) {
            System.out.println("Found next int"); //used for debugging
            int i = input.nextInt();
            coinTypes.add(i);
            if (input.hasNextLine()) {
               change = input.nextInt();
                System.out.println("Found change"); //used for debugging
                System.out.println("Change: " + change);
            }
       }
    System.out.println(coinTypes); //used for debugging
  }
}

ПРИМЕЧАНИЕ. Дополнительные System.out.println() используются, чтобы показать мне на выходе, что сканер нашел то, что указано, очевидно, ничего не появляется. Что не так?

output: []

вот мой файл hwk5sample1.txt который я использую в команде

// Coins available in the USA, given in cents.  Change for $1.43?
1 5 10 25 50 100
143

всякая помощь приветствуется! спасибо

РЕДАКТИРОВАТЬ В моем описании назначения, он должен уметь игнорировать подобные комментарии и все еще работать, поскольку тестер будет использовать похожие файлы

  • 0
    Что произойдет, если вы удалите комментарий из верхней части текстового файла?
  • 0
    hasNextInt() проверяет, являются ли следующие символы в файле / вводе целыми числами. «//» не является целым числом, поэтому hasNextInt() возвращает false
Показать ещё 2 комментария
Теги:
arraylist
java.util.scanner

1 ответ

3
Лучший ответ

Добавьте input.nextLine() чтобы прочитать эту строку комментариев

КОД

input.nextLine();
while (input.hasNextInt()) {
    System.out.println("Found next int"); // used for debugging
    int i = input.nextInt();
    coinTypes.add(i);
    if (input.hasNextLine()) {
        change = input.nextInt();
        System.out.println("Found change"); // used for debugging
        System.out.println("Change: " + change);
    }
}

ВЫВОД

Found next int
Found change
Change: 5
Found next int
Found change
Change: 25
Found next int
Found change
Change: 100
Found next int
[1, 10, 50, 143]
  • 0
    Хорошо, что сделал трюк спасибо! Я приму этот ответ, когда смогу

Ещё вопросы

Сообщество Overcoder
Наверх
Меню