【发布时间】:2019-02-16 13:27:04
【问题描述】:
我必须根据对象的区域、leftborder 或 lowerborder 对对象进行排序。当我想在它们的左边界或下边界对它们进行排序时,我必须说 sort x 和 sort y。当我想按区域排序时,我需要说只是排序。我试图通过 switch 方法执行此操作,但我不知道如何使用其中包含空字符串的 switch 方法。这就是我想要做的:
case "sort":
System.out.println("On what do you want to sort?");
String choice = scanner.nextLine();
switch (choice) {
case "x":
Arrays.sort(g, 0, lastPos, new Comparator < Geometric > () {
@Override
public int compare(Geometric o1, Geometric o2) {
if (o1.leftBorder() < o2.leftBorder()) {
return -1;
} else if (o1.leftBorder() > o2.leftBorder()) {
return 1;
} else {
return 0;
}
}
});
break;
case "y":
Arrays.sort(g, 0, lastPos, new Comparator < Geometric > () {
@Override
public int compare(Geometric o1, Geometric o2) {
if (o1.bottomBorder() < o2.bottomBorder()) {
return -1;
} else if (o1.bottomBorder() > o2.bottomBorder()) {
return 1;
} else {
return 0;
}
}
});
break;
case (""):
Arrays.sort(g, 0, lastPos, new Comparator < Geometric > () {
@Override
public int compare(Geometric o1, Geometric o2) {
if (o1.area() < o2.area()) {
return -1;
} else if (o1.area() > o2.area()) {
return 1;
} else {
return 0;
}
}
});
break;
default:
System.out.println("test1");
}
【问题讨论】:
-
代码有点乱,但是空字符串切换分支还行。
-
开关没问题,但我会删除括号。那么你真正的问题是什么 - 一些错误,一些奇怪的行为或......?
-
为了更好的代码,我建议使用枚举并在其中编写方法
-
也许您可以将
choice转换为字符。然后将其转换为 int 并比较字符代码。也许你得到的是回车或换行之类的东西。stackoverflow.com/a/20250062/495157
标签: java string switch-statement