初学者一枚,但确实想不出为什么请高人指点
``package citydistance;
import java.util.ArrayList;
public class Citys2 {
java.util.Scanner in=new java.util.Scanner(System.in);
ArrayList<String> citys=new ArrayList<String>();
int [][]a=new int[citys.size()][citys.size()];
public void citySize() {
String s=in.next();
while(true) {
if(s.equals("###")) {
break;
}
citys.add(s);
s=in.next();
}
}
public void setCity() {
for(int i=0;i<a.length;i++) {
for(int j=0;j<a[i].length;j++) {
a[i][j]=in.nextInt();
}
}
}
public void getDistance() {
int i=citys.indexOf(in.next());
int j=citys.indexOf(in.next());
int distanceAnswer=a[i][j];
System.out.println(distanceAnswer);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Citys2 s=new Citys2();
s.setCity();
s.getDistance();
}
}
`
Hagzou Hugzou Jigxng ###
0 1108 708
1108 0 994
708 994 0
Hagzou Jigxng
报错
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at citydistance.Try.sum(Try.java:11)
at citydistance.Try.main(Try.java:25)
试试下面的代码
package citydistance;
import java.util.ArrayList;
import java.util.Scanner;
public class Try {
ArrayList<Double> s=new ArrayList<Double>();
public void sum() {
java.util.Scanner in=new java.util.Scanner(System.in);
// 下面这句话的意思是只能输入整数
// int a=in.nextInt();
// 如果你要输入小数就用Double类型,
double a=in.nextDouble();
while(a!=0) {
s.add(a);
a=in.nextDouble();
}
}
public void getS() {
for(Double b:s) {
System.out.print(b);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Try c=new Try();
c.sum();
c.getS();
}
}
提示的错误是因为你用的nextInt,即输入的必须是整数,而你输入字符,就会报错。
出现这个问题的原因是:sum() 方法没有结束条件。
当你启动之后,调用了sum()方法,那么在之后所有输入都会去判断是否符合输入类型。
解决方法:在sum()设置结束的标志。例如输入999标识结束。或者设置等待时间,超过一定时间视为结束输入。
你都知道在citySize() 中设置输入结束符“###”。为啥把sum()给忘了呢。
貌似没什么不对。我好像把楼主的问题和一楼的回答看混了。
会什么只有回答修改,没有回复点击没反应呢?
package cn.tzy.Jblog.tests;
import org.springframework.util.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Map;
import java.util.Scanner;
public class Try {
ArrayList<Integer> s=new ArrayList<Integer>();
public void sum() {
//循环输入4个数字
for(int i=0;i<=3;i++){
System.out.println("请输入数字");
Scanner in = new Scanner(System.in);
int a=in.nextInt();
//如果a不等于0,那么放入s
if(a!=0) {
s.add(a);
}
}
}
public void getS() {
//遍历s,打印
for(int b:s) {
System.out.print(b);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Try c=new Try();
c.sum();
c.getS();
}
}