Java错误“;“线程中的异常”;“主要”;java.util.InputMismatchException“;关于数组程序
我最近输入了这个java程序,接受十个区域和它们的pin码,然后搜索找到一个特定区域并打印出它的pin码。 以下是程序中的代码: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
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){