Моя программа требует, чтобы пользователи вводили некоторые данные. Моя проблема заключается в том, что при ее запуске он показывает первый вопрос, а затем сразу переходит к второму вопросу, не дожидаясь ввода пользователя. Мой друг предложил положить sc.nextLine(), он действительно работал впервые, но когда он зациклился, он дал мне дополнительное пространство и фактически сохранил пространство для моего объекта. Для иллюстрации, когда я запускаю его, он показывает:java Программа не ждет ввода пользователем
Оригинал: Введите позицию № 1: Сколько мест (использование может ввести)
С дополнительным sc.nextLine: Введите позицию № 1: (пользователь можно ввести) Сколько мест:
НО второй раз показывает: Введите позицию № 2: (пользователь может ввести) (а затем пространство) , а затем следующий вопрос: Сколько мест:
Ниже мой код в моем основном классе. Заранее спасибо.
package election;
import java.util.ArrayList;
import java.util.Scanner;
import java.lang.StringBuilder;
public class Election {
public static void main(String[] args) {
int maxpos;
int count;
int maxcan;
int cancount;
String name;
int num;
String position;
int posnum;
int seat;
String party;
int vote;
Scanner sc = new Scanner(System.in);
ArrayList<Candidate> list = new ArrayList<Candidate>();
Candidate c;
do{
System.out.print("How many positions for this election: ");
maxpos = sc.nextInt();
for(count = 1; count<=maxpos; count++){
System.out.print("Enter position no. " + count + ": ");
position = sc.nextLine();
sc.nextLine();
posnum = count;
System.out.print("How many seats: ");
seat = sc.nextInt();
System.out.print("Enter number of candidates: ");
maxcan = sc.nextInt();
for(cancount = 1; cancount<=maxcan; cancount++){
System.out.print("Enter candidate no. " + cancount + " name: ");
name = sc.nextLine();
num = cancount;
System.out.print("Enter candidate no. " + cancount + " party: ");
party = sc.nextLine();
c = new Candidate(name, num, position, posnum, seat, party);
list.add(c);
}
}
}while(!(count > maxpos));
for(int i = 0; i<list.size(); i++){
list.get(i).displayInfo();
}
}
}
possi двойного дубликата [Пропуск nextLine() после использования nextInt()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint) или [Проблема с сканером при использовании nextLine после следующегоXXX] (http: //stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextxxx) – Pshemo