#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.