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 里去了……
跪求大神解答!
import java.util.*;
public class CityDistance {
private List<String> city = new ArrayList<String>();
private int answer = 0;
private Map<String, Integer> distance = new HashMap<String, Integer>();
public void input()
{
Scanner in = new Scanner(System.in);
String temp = null;
System.out.println("请输入城市(“###”结束输入):");
/*
* 注意:字符串是一个对象,不是基本类型,不能使用==比较,要使用equals
*/
while (!(temp = in.next()).equals("###"))
{
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);
System.out.print("请输入"+city.get(i) + "<-->"+city.get(j)+"的距离:");
distance.put(key, in.nextInt());
}
}
/*
* 注意:不能关闭,否则的话之后即使在main函数里有一个scanner,也不能使用
*/
//in.close();
}
public int FindDistance(String A, String B)
{
String str = A + B;
if(distance.containsKey(str)){
answer = distance.get(str);
return answer;
}
return 0;
}
public static void main(String[] args) {
CityDistance cd = new CityDistance();
cd.input();
Scanner in = new Scanner(System.in);
System.out.println("查询城市间距离:");
System.out.print("输入城市1:");
/*
* 注意:input()里不要调用in.close(),否则这里得不到输入,你可以测试一下,加深下印象
*/
String A = in.next();
System.out.print("输入城市2:");
String B = in.next();
System.out.println(A + "<-->"+B + "的距离:" + cd.FindDistance(A,B));
}
}
asd asd adadadadasdadaasda
while (true)
{
temp = in.next()
if(temp.equals("###")){
city.add(temp);}
else{
break;}
}
比较字符串不要再等号,用equal
你去了解一下 == 与equals 就知道为什么 了
字符串判断问题,JAVA用equals,还有楼上说的关闭问题+1