扫描程序java未在for循环中获取输入

扫描程序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

我试图在Java中从扫描器获取多个输入,输入需要在for循环中。 正如我在for中所说的,单输入正在工作,第一个循环按预期工作,但第二个循环在第一个输入处停止。 在循环之前,我得到一个整数,因此我放置了一个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 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);
    }
}