package CityDistance;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class CityDistance {
private ArrayList<String> city = new ArrayList<String>();
private int answer = 0;
HashMap<String, Integer> distance = new HashMap<String, Integer>();
public void input()
{
Scanner in = new Scanner(System.in);
String temp = null;
while ((temp = in.next()) != "###")
{
city.add(temp);
}
int number = city.size();
for ( int i = 0; i < number; i++ )
{
for ( int j = 0; j < number; j++ )
{
String key = "" + city.get(i) + city.get(j);
distance.put(key, in.nextInt());
}
}
in.close();
}
public int FindDistance(String A, String B)
{
String str = A + B;
answer = distance.get(str);
System.out.println(answer);
return answer;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
CityDistance cd = new CityDistance();
cd.input();
cd.FindDistance(in.next(), in.next());
in.close();
}
}
输入如下:
aaa bbb ccc ###
0 1 2
1 0 3
2 3 0
aaa bbb
input 函数里的第一个 while ,已经设定好了遇到 "###" 的输入就停止往 city 里加东西,但调试时发现 while 并没有停止,反而把后面的0、1、2都添到 city 里去了……
跪求大神解答!