为什么我的程序抛出 java.util.InputMismatchException?

Why is my program throwing java.util.InputMismatchException?

我的代码出现错误:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at Hello.main(Hello.java:22)

我的示例的完整代码如下:

import java.util.Scanner;
import java.util.*;

public class Hello {

    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        int  n = sc.nextInt();
        String[] friends = new String[n];
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        for(int i = 0; i < n; i++)
        {
            friends[i] = sc.next();
            map.put(friends[i], i);
        }
        int[] money = new int[n];
        for(int i = 0; i < n; i++)
        {
            int idx = map.get(sc.next());
            int gift = sc.nextInt();
            int M = sc.nextInt();
            int reminder =gift % M;
            int dev = gift / M;
            money[idx] = reminder;
            money[idx] -= gift;
        }
    }
}

您没有提供足够的输入。循环:

for(int i=0;i<n;i++)
    {
        int idx = map.get(sc.next());
        int gift = sc.nextInt();
        int M = sc.nextInt();
        int reminder =gift%M;
        int dev = gift/M;
        money[idx]=reminder;
        money[idx]-=gift;

    } 

将 运行 3 次,根据您的输入,并且在每个 运行 中,它将需要一个字符串和两个整数。您只提供一次此输入。

import java.util.HashMap;
import java.util.Scanner;


public class TestProgram {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("Enter a number of friends you want to enter:");
        Scanner sc = new Scanner(System.in);
        int  n = sc.nextInt();   
        int []money=new int[n];
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        for(int i=0;i<n;i++)
        {
            System.out.println("Enter a name of ther friends you want to enter:");
            String name =sc.next();
            map.put(name, i);
            System.out.println("Enter the number of gifts you want to give:");
            int gift = sc.nextInt();
            System.out.println("Enter the money  you want to spend on the gift:");
            int M = sc.nextInt();
            int reminder =gift%M;
            int dev = gift/M;
            money[i]=reminder;   
        }
    }

}