Java错误“;“线程中的异常”;“主要”;java.util.InputMismatchException“;关于数组程序

Java错误“;“线程中的异常”;“主要”;java.util.InputMismatchException“;关于数组程序,java,arrays,Java,Arrays,我最近输入了这个java程序,接受十个区域和它们的pin码,然后搜索找到一个特定区域并打印出它的pin码。 以下是程序中的代码: import java.util.Scanner; public class Sal { public static void main (String args []){ Scanner s=new Scanner(System.in); System.out.println("Enter 10 areas and the

我最近输入了这个java程序,接受十个区域和它们的pin码,然后搜索找到一个特定区域并打印出它的pin码。 以下是程序中的代码:

import java.util.Scanner;
public class Sal {

    public static void main (String args []){ 
        Scanner s=new Scanner(System.in);
        System.out.println("Enter 10 areas and their pincodes");
        String area[]=new String [10];
        int pincode[]=new int [10];
        String search;
        int chk=0;
        int p=0;

        for (int i=0;i<=9;i++){
            area[i]=s.nextLine();
            pincode[i]=s.nextInt();
        }

        System.out.println("Enter Search"); 
        search=s.nextLine();

        for (int j=0;j<=9;j++){
            if(search==area[j]){
                chk=1;
                j=p;
                break;
            }
        }

        if(chk==1){
            System.out.println("Search Found "+"Pincode : "+pincode[p] );
        } else {
            System.out.println("Search not Found");
        }
    }
}
谁能告诉我我做错了什么!:/ 感谢您的帮助。

来自:

由扫描程序引发,以指示检索到的令牌与预期类型的模式不匹配,或者该令牌超出预期类型的范围


似乎您输入了一个字符串,而
nextInt()
需要一个整数。

我假设错误发生在
pincode[I]=s.nextInt()行(即第14行)。发生这种情况的原因是无法将输入(来自System.in)解析为
int
。您确定输入的值正确吗?

来自以下文档:

InputMismatchException-如果下一个标记与整数正则表达式不匹配,或超出范围

所以,听起来你的
扫描器
试图读取
整数
,但得到的东西却无法转换成
整数(要么读取的不是数字,要么数字太大)

您可以在此处调用相关函数:

for (int i=0;i<=9;i++){
    area[i]=s.nextLine();
    pincode[i]=s.nextInt(); // <-- the culprit
}

for(int i=0;i无法将输入解析为整数。
也许在这行的末尾有一个逗号

顺便说一句:

如果(搜索==区域[j])


检查字符串相等性是一种不好的做法。使用search.equals(area[j])进行空检查。

首先,记住缩进代码以确保可读性

概念1.

for (int i=0;i<=9;i++){

area[i]=s.next();// Use this for String Input

pincode[i]=s.nextInt();

s.nextLine();//Use this for going to next line of input

}
if(search.compareTo(area[j])==0){ 
//使用compareTo方法比较字符串(如果相等,则返回0


您的其余代码和概念都是正确的:)

我是编程新手。但是,在为银行创建客户时,我遇到了类似的问题(这只是一个实践问题).为了解决这个问题,我为每种输入类型创建了单独的扫描程序,并在程序结束时关闭了所有扫描程序。它起作用了。

这是一个不错的做法,只是在他使用它的上下文中明显不正确。双等运算符不检查字符串的内容,而是检查它们是否是相同的字符串对象。在这种情况下在Java中,
.Equals()
方法是比较字符串相等性的唯一方法,除非您想比较内存地址。毕竟,还有一个问题,
if(search==area[j])
应该是
if(search.Equals(area[j])
。我个人是
Integer.parseInt(s.nextLine())
的粉丝,而不是连续使用
s.nextInt()
s.nextLine()
,但我想我更经常看到后者。祝你编程旅途好运!
if(search.compareTo(area[j])==0){