Java 在for()循环中声明2个变量
我有两个这样的循环 好表达式和坏表达式是字符串数组Java 在for()循环中声明2个变量,java,Java,我有两个这样的循环 好表达式和坏表达式是字符串数组 for(int i =0; i < goodexpressions.length; i++) {} for(inti=0;i
for(int i =0; i < goodexpressions.length; i++) {}
for(inti=0;i
&
for(int j=0;j
我试图在一个循环中声明这两个,到目前为止我已经得到了,但它是不正确的
for(int b = 0 , c = 0; b < goodexpressions.length; b++ c < badexpressions.length; c++)
for(int b=0,c=0;b
我该怎么做才能纠正这句话呢?尽管您试图做的似乎是个坏主意,但下面有一段代码可以工作。我不知道它是否完全符合你的要求,因为我还不完全清楚
for(int b = 0, c = 0; b < goodexpressions.length || c < badexpressions.length; b++, c++) { }
for(intb=0,c=0;b
但是,在执行此操作时,您仍然必须检查
b
和c
是否在数组索引范围内。您还可以将|
替换为&&
,在这种情况下,您不必再这样做了,但如果数组长度不相等,您将丢失一些项 根据您想要实现的目标,您应该执行以下操作之一。假设您有两个列表A
和B
如果要循环两个列表A
和B
中的所有元素,请创建一个新列表或数组,保存两个列表的元素并循环该列表
for (int i = 0; i < combinedAandB.length; i++) {
...
}
更新:关于您问题中的双变量循环方法和其他两个答案:请注意,由于这两个变量在循环的每次迭代中都具有完全相同的值,您也可以只使用一个变量:
for (int i = 0; i < goodexpressions.length || i < badexpressions.length; i++) { }
for(int i=0;i
但也要注意,这在避免代码重复方面对您没有任何好处,因为您仍然必须同时执行以下两项操作:
goodexpressions[i]
和badexpressions[i]
。更好的方法可能是编写一个保持循环的方法,用goodexpressions
调用该方法一次,用badexpressions
调用该方法一次 我想这会满足你的要求:
for (int b = 0, c = 0;
b < goodexpressions.length && c < badexpressions.length;
b++, c++)
注:
&&
更改为|
并将min
更改为max
。但是,如果这样做,还需要注意避免数组边界异常goodexpression[i]
和badexpression[i]
(例如,比较它们,组合它们,等等),否则如果使用两个单独的循环,代码将更具可读性和效率你为什么要这样做?这会使代码难以读取,这从来都不是一件好事。先计算数组中的字符串数,然后计算第一个数组中的字符串数,再计算第二个数组中的字符串数,然后添加结果。为了避免代码重复,将循环和计数代码放在一个单独的方法中,并调用此方法两次:
int sum=countStringsIn(badexpressions)+countStringsIn(goodexpressions)
为什么不直接使用goodexpressions.length
+badexpressions.length
呢?因此您希望找到两个数组的组合长度,但确保没有重复的数组?只需执行Arrays.asList(goodexpressions)
和Arrays.asList(badexpressions)
,然后创建一个新的HashSet
,并使用addAll
方法添加Arrays.asList(goodexpressions)
和Arrays.asList(badexpressions)
。最后,只需在HashList上调用.size()
。(.asList()
返回一个转换为列表的数组,您需要在哈希集
上使用addAll
方法。哈希集
不允许重复条目。)您的意图不清楚,因此,我可能没有很好地回答您的问题。相反,我只是自己将goodexpressions和badexpressions组合在一起(新字符串[],并将字符串复制粘贴到提到的2个araray中),并使用了该数组。我想使用apache库的数组合并器,但这会导入不必要的数据,我正在android上编码,而且手机的资源仍然有限。谢谢你的回答。@joedacoolgay“导入不必要的数据”-嗯?“移动电话的资源有限”——不是那么有限。我不会在其中加载Spring,但实用程序库从未杀死任何人。你的图形资产很可能会占用更多的空间。第一点你是对的。第二,不清楚OP想要什么。我的假设是他想在这一点上停下来。但如果不是这样,我的代码就可以简单地修改了。我取消了否决票,但是任何阅读此答案的人都应该记住,如果数组长度不相同,某些元素将不会被测试。显然,将&&
更改为|
和min
更改为max
可能会导致较小数组上的索引越界异常。底线是,以这种方式“组合”两个数组不是一个好主意。
for (int i = 0; i < goodexpressions.length || i < badexpressions.length; i++) { }
for (int b = 0, c = 0;
b < goodexpressions.length && c < badexpressions.length;
b++, c++)
for (int i = 0; i < Math.min(goodexpressions.length, badexpressions.length); i++)