
1 whatCanIDoForYou OP 如果您继续往下读可能浪费你的时间(您理解的),当然非常期待您的回复。 |
2 whatCanIDoForYou OP 上面那个方法实现了两个非偶数的判断。但是我突然想 我能不能不写那两句 if 判断,加一些逻辑运算符 在第二个 for 循环去判断。 如果实现了 我觉得就比较 B 格高 哈哈哈哈 在尝试。 也请大家帮忙想下。 |
3 pushback 2020 年 7 月 20 日 for (int i = 1; i <= 20; i++) for (int j = 1; j <= 20; j++) if ((i + j) % 2 ==0) continue; 然后怎么优化,细说喃 |
4 whatCanIDoForYou OP @pushback #3 就是没有想好怎么优化,只是突发奇想不想写这两行 判断 能不能在 第二个 for 中 使用 && 解决 |
5 whatCanIDoForYou OP @pushback #3 而且你这个 + 的判断 也不中啊 铁子 两个奇数也跳走了~~ |
6 pushback 2020 年 7 月 20 日 哦哦,没审题 |
7 Vegetable 2020 年 7 月 20 日 first 是奇数时,第二层循环整个就是浪费的, 不应该在输出前判断。 其次,你可以直接 for int i=2;i<=20;i+=2 设置步长为 2 跳过奇数。 最后,在 for 循环当中直接判断好像是不行的, |
8 whatCanIDoForYou OP @Vegetable #7 可能是我没有表述太清楚哦 抱歉。 不论奇数还是偶数都是要使用的,但是 在使用两个数的时候不能同时为偶数。再次抱歉 |
10 remiver 2020 年 7 月 20 日 ((i | j) & 1) > 0 这种? |
11 Vegetable 2020 年 7 月 20 日 @whatCanIDoForYou #8 是我没看清楚. 不能同时为偶数的话,两个数二进制最后一位必须有一个 1,所以 1&(first|second)==1,这个倒是能通过位运算判断 |
12 lllue 2020 年 7 月 20 日 for (int i = 0; i < 20; i++) { int first = i+1; for (int j = 0; j < 20 ; j=j+1+i%2) { int secOnd= j+1; //如果同时为偶数,则跳出本次循环 System.out.println("首当其冲:"+first +"退而求次:"+ second +",结果等于"+ String.format("%.3f", first / new Double(second))); } } |
13 pushback 2020 年 7 月 20 日 // scope 1~20 int[] oArr = {19, 2, 3, 5, 6, 8, 15, 20, 1}; int[] deArr = {6, 7, 3, 2, 12, 18, 11, 19, 9}; for (int i = 0; i < moArr.length; i++) { int mo = moArr[i]; for (int j = 0; j < deArr.length; j++) { int de = deArr[j]; {continue;} } } for 第二段是 end 条件,你要在里面进行 continue,有点骚 |
14 whatCanIDoForYou OP |
15 Vegetable 2020 年 7 月 20 日 @whatCanIDoForYou #14 奇数和奇数也是的,两个奇数相当于(1 or 1) and 1,结果也是 1 |
16 pushback 2020 年 7 月 20 日 @whatCanIDoForYou 没有,我只是重新罗列了一下,上面说按步长的情况在乱序数组里面不适用 |
17 cigarzh 2020 年 7 月 20 日 for (int j = 1; j <= 20 ; j=j+((~(i&1)&j&1)==1?2:1)) { 初始化的 ij 不能都为偶数 |
18 msg7086 2020 年 7 月 20 日 这不是 B 格高,这属于代码混淆,把原本思路清晰的代码改写成一个星期后的自己也看不懂的代码。 |
19 whatCanIDoForYou OP |
20 superJava 2020 年 7 月 20 日 public static void main(String[] args) { IntStream.range(1, 20).forEach(i -> { IntStream.range(1, 20).filter(j -> !(i % 2 == 0 && j % 2 == 0)).forEach(j -> { System.out.println("首当其冲:" + i + "退而求次:" + j + ",结果等于" + String.format("%.3f", i / new Double(j))); }); }); } |
21 whatCanIDoForYou OP @superJava #20 1.8 新特性 good 谢谢您~ |