Поиск любого другого целочисленного маркера с помощью сканера для файла

#java #file #io #java.util.scanner

Вопрос:

Я использую a Scanner для примера файла, в котором 4 мальчика и 3 девочки. После каждого имени стоит целое число (например Mike 24 ), и оно начинается с мальчика, затем девочки, затем мальчика, затем девочки и т. Д. В общей сложности есть 4 мальчика и 3 девочки, и я должен посчитать количество мальчиков и девочек, а затем сложить числа каждого мальчика для суммы, затем то же самое для девочек. Кроме того, когда я назначил мальчиков console.nextInt() , это берет номер из файла, а затем присваивает переменной мальчиков? Кроме того, есть ли console.hasNext() индекс, например, если он читает токен № 1, то я могу сказать console.hasNext() == 1; ?

Примеры данных:

 Erik 3 Rita 7 Tanner 14 Jillyn 13 Curtis 4 Stefanie 12 Ben 6  

Код:

 import java.util.*; import java.io.*; public class Lecture07 {   public static void main(String[] args) throws FileNotFoundException{  System.out.println();  System.out.println("Hello, world!");    // EXERCISES:   // Put your answer for #1 here:  // You will need to add the method in above main(), but then call it here  Scanner console = new Scanner(new File("mydata.txt"));  boyGirl(console);  }    public static void boyGirl(Scanner console) {   int boysCount = 0;  int girlsCount = 0;   while (console.hasNext()) {  if (console.hasNextInt()) {  int boys = console.nextInt();  int girls = console.nextInt();    }  else {  console.next();  }  }   }  }  

Ответ №1:

тот hasNext() вернется только true или false . во-первых, вы не должны делать int boys = console.nextInt(); это внутри цикла, так как он каждый раз будет создавать новую переменную, и данные будут потеряны. то , что вам нужно сделать, это назначить int boys = 0; просто ниже 2 ваших других переменных int boysCount , и int girlsCount то же самое касается int girls = 0

далее вам понадобится что-то вроде этого :

 public static void boyGirl(Scanner console) {  int boysCount = 0; // here we asigning the variables that we gonna be using  int girlsCount = 0;  int boys = 0;  int girls = 0;   while (console.hasNext()) { // check if there is next element, it must be the name  console.next(); // consume the name, we do not want it. or maybe you do up to you  boys  = console.nextInt(); // now get to the number and add it to boys  boysCount  ; // increment the count by 1 to use later, since we found a boy   if (console.hasNext()) { // if statement to see if the boy above, is followed by a girl  console.next(); // do same thing we did to the boy and consume the name  girls  = console.nextInt(); // add the number  girlsCount  ; // increment girl  }  }  

теперь после цикла while вы делаете с переменными то, что хотите, например, печатаете их или что-то в этом роде. надеюсь, я смогу вам помочь.

Комментарии:

1. Большое спасибо! Я работаю над этим уже несколько дней и борюсь с Java.