我正在尝试从Java中的Scanner获取多个输入,输入必须处于for循环中。 正如我在for中所述,单个输入正在工作,第一个cicle可以按预期工作,但是第二个在第一个输入处停止。 在循环之前,我得到一个整数,因此我将scan.nextLine()放入以获取'\ n'字符,在循环中,我仅使用字符串。
我想知道问题可能是流关闭,但是我需要将其打开,关闭它会得到扫描仪异常。
public void scegliEsame(Medico m)
{
Scanner scan=new Scanner(System.in);
String nome, data;
System.out.print("Inserire numero di esami da prenotare: ");
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
for(int i=0;i<ex;i++)
{
System.out.print("Inserire nome esame da voler effettuare: ");
nome=scan.nextLine();
if(m.getCosto(nome)==-1)
{
System.out.println("Esame non trovato");
return;
}
else
costo+=m.getCosto(nome);
System.out.print("Inserire data di prenotazione: ");
data=scan.nextLine();
Esame e=new Esame(nome, m, data,costo);
esami.add(e);
}
}
第二类的代码方法
public void caricaEsami(Medico m)
{
String esame;
float costo;
System.out.print("Inserire numero di esami totali: ");
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
scan.nextLine();
for(int i=0;i<n;i++)
{
scan=new Scanner(System.in);
System.out.print("Inserire esame "+(i+1)+": ");
esame=scan.nextLine();
System.out.print("Inserire costo esame: ");
costo=scan.nextFloat();
Esame e=new Esame(esame, m, costo);
m.setEsame(e);
scan.nextLine();
}
medici.add(m);
}
对代码中的意大利语感到抱歉,希望您能为我提供帮助。
答案 0 :(得分:0)
由于您的问题是Scanner的问题,您可以检查一下是否适合您吗?您很可能还有其他问题。
import java.util.*;
public class Main
{
public static void main(String[] args) {
System.out.println("Hello World");
scegliEsame();
}
public static void scegliEsame(){
Scanner scan=new Scanner(System.in);
String nome, data;
System.out.print("Enter number of exams to be booked: ");
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
for(int i=0;i<ex;i++)
{
System.out.print("Enter exam name you want to make: ");
nome=scan.nextLine();
System.out.println("You Entered: " + nome);
}
}
}
答案 1 :(得分:0)
此代码看起来不错,并且对我有用。
public class Test {
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
public static void main(String[] args) {
new Test().scegliEsame();
}
public void scegliEsame()
{
Scanner scan=new Scanner(System.in);
String nome, data;
System.out.print("Inserire numero di esami da prenotare: ");
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
for(int i=0;i<ex;i++)
{
System.out.print("Inserire nome esame da voler effettuare: ");
nome=scan.nextLine();
if(false)
{
System.out.println("Esame non trovato");
return;
}
else
list1.add(nome);
System.out.print("Inserire data di prenotazione: ");
data=scan.nextLine();
list2.add(data);
}
System.out.println(list1+"\n\n"+list2);
}
}
答案 2 :(得分:0)
如果您想多次使用nextLine()
,则可能会遇到此问题,因为它将把第一个输入中的\n
作为输入。为避免这种情况,请使用next()
。