扫描程序java未在for循环中获取输入
我试图在Java中从扫描器获取多个输入,输入需要在for循环中。 正如我在for中所说的,单输入正在工作,第一个循环按预期工作,但第二个循环在第一个输入处停止。 在循环之前,我得到一个整数,因此我放置了一个scan.nextLine()来获得'\n'字符,在循环中,我只处理字符串 我认为问题可能是流关闭,但我需要它是打开的,关闭它我得到一个扫描器异常扫描程序java未在for循环中获取输入,java,for-loop,java.util.scanner,Java,For Loop,Java.util.scanner,我试图在Java中从扫描器获取多个输入,输入需要在for循环中。 正如我在for中所说的,单输入正在工作,第一个循环按预期工作,但第二个循环在第一个输入处停止。 在循环之前,我得到一个整数,因此我放置了一个scan.nextLine()来获得'\n'字符,在循环中,我只处理字符串 我认为问题可能是流关闭,但我需要它是打开的,关闭它我得到一个扫描器异常 public void scegliEsame(Medico m) { Scanner scan=new Scanner(System.i
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 scegliEsame(Medico m)
{
扫描仪扫描=新扫描仪(System.in);
字符串名称,数据;
系统输出打印(“esami da prenotare数字插图:”;
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
对于(int i=0;i由于您的问题是扫描仪的问题,您能检查一下这是否对您有效吗?很可能您还有其他问题
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);
}
}
}
import java.util.*;
公共班机
{
公共静态void main(字符串[]args){
System.out.println(“你好世界”);
scegliEsame();
}
公共静态void scegliEsame(){
扫描仪扫描=新扫描仪(System.in);
字符串名称,数据;
System.out.print(“输入要预订的考试数量:”);
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
对于(inti=0;i这段代码看起来很好,它适合我
公共类测试{
List list1=新的ArrayList();
List list2=新的ArrayList();
公共静态void main(字符串[]args){
新测试().scegliEsame();
}
公共无效scegliEsame()
{
扫描仪扫描=新扫描仪(System.in);
字符串名称,数据;
系统输出打印(“esami da prenotare数字插图:”;
int ex=scan.nextInt();
System.out.println();
scan.nextLine();
对于(int i=0;i如果您想多次使用nextLine()
,您可能会遇到此问题,因为它会将第一次输入的\n
作为输入。要避免这种情况,请使用next()
您所说的“停止”是什么意思?我用print
语句测试了你的循环,它工作正常。你的问题可能是代码中我们看不到的地方,尝试删除对其他类的调用,只打印data
和nome
,你会看到这些值正在正确存储。代码对我来说工作正常,也许这就是问题所在if(m.getCosto(nome)=-1)
我已经测试了你的代码,扫描仪工作正常。如果我正确解决了你的问题,“bug”是由循环中的return语句引起的,它打破了循环。我认为这里的结论是,这是您需要自己解决的问题,可以使用调试器,也可以在代码中添加变量的print语句。反过来是:)。请检查
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);
}
}
}
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);
}
}