思路
这里用了两个ArrayList,其实可以只用一个(name),将第二个ArrayList(integers)直接变为数组即可,这样更加直观。
作者这里当作对于ArrayList的练习。
如有错误,欢迎大佬指出!
新手需要注意String与String之间的比较,用equals比较是否内容相同,用==比较是否是同一个。
代码
import java.util.ArrayList;
import java.util.Scanner;
/**
* @Author 不知名网友鑫
* @Date 2022/1/27
**/
public class Main {
ArrayList<String > name=new ArrayList <String>(); //放入城市名字。
ArrayList<Integer> integers=new ArrayList<Integer>(); //放入数字。这里用ArrayList表示无限大的数组。
public void add(String s){
name.add(s);
}
public int getSize() {
return name.size();
}
public String getString (int index){
return name.get(index);
}
public void addnum(int a){
integers.add(a);
}
public int getint(int index){
return integers.get(index);
}
public static void main(String[] args) {
int cnt=0;
Main main=new Main();
Scanner in= new Scanner(System.in);
String s=new String();
do {
if(cnt==0) {
s = in.next();
}
if (s.equals("###")==true) {
main.addnum(in.nextInt());
cnt++;
} else {
main.add(s);
}
}while(cnt!=(main.getSize()* main.getSize()));
int ret=0;
for(int i=0;i!=2;i++) { //最后只在两个城市之间.
String s1 = in.next();
for(int j=0;j< main.getSize();j++){ //遍历,找到两次所给城市的位置。
if(main.getString(j).equals(s1)){
if(i==0) { //第一次遍历,确定行数。
ret = main.getSize() * j;
}else if(i==1){ //第二次遍历,确定列数。
ret+=j;
}
}
}
}
System.out.println(main.getint(ret)); //返回对应行列的数即可。
}
}