【发布时间】:2020-01-01 14:53:14
【问题描述】:
这里有个问题: 给定由成对的出发和到达机场 [from, to] 表示的机票列表,按顺序重构行程。所有的票都属于一个从肯尼迪机场出发的人。因此,行程必须从肯尼迪机场开始。
注意:
如果有多个有效行程,您应该在读取为单个字符串时返回具有最小词汇顺序的行程。例如,行程 ["JFK", "LGA"] 的词汇顺序比 ["JFK", "LGB"] 小。 所有机场均由三个大写字母(IATA 代码)表示。 您可以假设所有机票至少包含一个有效行程。
不幸的是,我总是遇到这些错误
第 63 行:错误:找不到符号 [在 MainClass.java 中] list.add(stringToStringList(cols.toString())); ^ 符号:方法 stringToStringList(String) 位置:类 MainClass 第 83 行:错误:找不到符号 [in MainClass.java] 列表> 门票 = stringToString2dList(line); ^ 符号:方法 stringToString2dList(String) 位置:类 MainClass 2 错误
这是我的代码:
class Solution {
class Checker implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}
public List<String> findItinerary(List<List<String>> tickets){
String begin="JFK";
final String example=begin;
List<String> solution = new ArrayList<>();
long counter=tickets.stream().filter(lister->lister.get(0).equals(example)).count();
List<String> lexic=tickets.stream().filter(lister->lister.get(0).equals("JFK")).map(p->p.get(1)).distinct().collect(Collectors.toList());
Comparator<String> comparator =new Checker();
lexic.sort(comparator);
solution.add(begin);
begin=lexic.get(0);
System.out.println(counter);
for(int i=0;i<tickets.size();i++) {
if(tickets.get(i).get(0).equals(begin)) {
if(!solution.contains(begin)) {
solution.add(begin);
}
begin=tickets.get(i).get(1);
solution.add(begin);
i=-1;
}
}
return solution;
}
}
public class MainClass {
public static String[] stringToStringArray(String line) {
JsonArray jsonArray = JsonArray.readFrom(line);
String[] arr = new String[jsonArray.size()];
for (int i = 0; i < arr.length; i++) {
arr[i] = jsonArray.get(i).asString();
}
return arr;
}
public static List<List<String>> stringToString2dArray(String input) {
JsonArray jsonArray = JsonArray.readFrom(input);
if (jsonArray.size() == 0) {
return new ArrayList<List<String>>();
}
List<List<String>> list = new ArrayList<>(jsonArray.size());
for (int i = 0; i < jsonArray.size(); i++) {
JsonArray cols = jsonArray.get(i).asArray();
list.add(stringToStringList(cols.toString()));
}
return list;
}
public static String stringListToString(List<String> stringList) {
StringBuilder sb = new StringBuilder("[");
for (String item : stringList) {
sb.append(item);
sb.append(",");
}
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
List<List<String>> tickets = stringToString2dList(line);
List<String> ret = new Solution().findItinerary(tickets);
String out = stringListToString(ret);
System.out.print(out);
}
}
}
【问题讨论】:
-
您只是在尝试调用不存在的方法。仔细阅读消息。查看您正在调用的方法。然后看看你定义的方法。
-
错误意味着在您的类
MainClass中没有名为stringToStringList和stringToString2dList的方法。查看您的课程,确实没有这样的方法,但是您确实有名为stringToStringArray和stringToString2dArray的方法。解决方案:使用正确的方法名。 -
请更改您的问题标题以反映您面临的实际问题。就目前而言,它对任何人都没有任何好处。
标签: java algorithm data-structures compiler-errors core