【发布时间】:2020-01-19 07:15:41
【问题描述】:
我对 Java 数据结构还很陌生,我需要一些帮助才能使用三元运算符来处理多个条件,或者我正在尝试做的事情是否有更好的方法。
基本上,我有一个文本文件,它放入一个二维数组并逐个字符分割每一行。
但是,我在使用 条件语句 来检查行中的特定字符时遇到了一些问题。
这是我目前的算法。
for (int i = 2; i < lines.size() - 1; i++) {
String floorLine = lines.get(i);
int j = 0;
for(char coor : floorLine.toCharArray()) {
floor[i - 2][j] = (coor == '#') ? 0 : 1;
}
}
到目前为止,我只检查是否有 # 在行中,然后它将编码为 0 否则 1。但是,我想要这样的东西
floor[i-2][j] = (coor == '#') ? 0 floor[i-2][j] = (coor == 'X') ? 1 floor[i-2][j] = (coor == 'Z') ? 2 : 3
所以如果我使用正常的 if else 语句,我应该是这样的
if 2d array == ( coor == '#') encode as 0
if 2d array == ( coor == 'X') encode as 1
if 2d array == ( coor == 'Z') encode as 2
else encode as 3
任何建议或提示将不胜感激!提前谢谢你。
【问题讨论】:
-
虽然可以在 Java 中嵌套三元语句,但通常不会这样做,因为它们很快就会变得非常难以阅读。可读性胜过简洁。如果你不嵌套它们,以后你会感谢你的。
-
你应该改用 switch-case
-
您能否在更高的层次上描述一下代码在做什么?在我看来,它有点像“在整个文本中用这些数字替换这些字符”,除非函数的性能绝对关键,否则
text.replaceAll(char,replaceChar)会更好地工作 -
JonK 我同意这一点,我只是想知道是否可以像使用三元运算符那样做。 @Deltharis 基本上就像文本文件中的一个谜题,这就是为什么我将它们映射到二维数组然后相应地编码特定字符的原因。该程序的主要目标是获取拼图的所有可能路径。
标签: java multidimensional-array conditional-statements ternary-operator