跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 突发奇想问一个 Java 的一个小小小问题
未分類
21 7 月 2020

突发奇想问一个 Java 的一个小小小问题

突发奇想问一个 Java 的一个小小小问题

資深大佬 : whatCanIDoForYou 4

/**
*
* 两个数不能同时为偶数
* 分母和分子 取值范围在[1-20]
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
int first = i;
for (int j = 1; j <= 20 ; j++) {
int second = j;
//如果同时为偶数,则跳出本次循环
if((first%2 == 0) && (second%2==0) )
continue;
System.out.println(“首当其冲:”+first +”退而求次:”+ second +”,结果等于”+ String.format(“%.3f”, first / new Double(second)));
}
}
大佬有話說 (21)

  • 主 資深大佬 : whatCanIDoForYou

    如果您继续往下读可能浪费你的时间(您理解的),当然非常期待您的回复。

  • 主 資深大佬 : whatCanIDoForYou

    上面那个方法实现了两个非偶数的判断。但是我突然想 我能不能不写那两句 if 判断,加一些逻辑运算符 在第二个 for 循环去判断。
    如果实现了 我觉得就比较 B 格高 哈哈哈哈
    在尝试。
    也请大家帮忙想下。

  • 資深大佬 : pushback

    for (int i = 1; i <= 20; i++)
    for (int j = 1; j <= 20; j++)
    if ((i + j) % 2 ==0)
    continue;
    然后怎么优化,细说喃

  • 主 資深大佬 : whatCanIDoForYou

    @pushback #3 就是没有想好怎么优化,只是突发奇想不想写这两行 判断 能不能在 第二个 for 中 使用 && 解决

  • 主 資深大佬 : whatCanIDoForYou

    @pushback #3 而且你这个 + 的判断 也不中啊 铁子 两个奇数也跳走了~~

  • 資深大佬 : pushback

    哦哦,没审题

  • 資深大佬 : Vegetable

    first 是奇数时,第二层循环整个就是浪费的, 不应该在输出前判断。
    其次,你可以直接 for int i=2;i<=20;i+=2 设置步长为 2 跳过奇数。
    最后,在 for 循环当中直接判断好像是不行的,

  • 主 資深大佬 : whatCanIDoForYou

    @Vegetable #7 可能是我没有表述太清楚哦 抱歉。 不论奇数还是偶数都是要使用的,但是 在使用两个数的时候不能同时为偶数。再次抱歉

  • 資深大佬 : pushback

    @Vegetable 如果这两个数组是不规则数组,步长也是不能固定的

  • 資深大佬 : remiver

    ((i | j) & 1) > 0 这种?

  • 資深大佬 : Vegetable

    @whatCanIDoForYou #8 是我没看清楚.
    不能同时为偶数的话,两个数二进制最后一位必须有一个 1,所以 1&(first|second)==1,这个倒是能通过位运算判断

  • 資深大佬 : lllue

    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)));
    }
    }

  • 資深大佬 : pushback

    // scope 1~20
    int[] moArr = {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,有点骚

  • 主 資深大佬 : whatCanIDoForYou

    @remiver #10 哈哈哈哈哈 我对于这些奇数还有点懵,我验证了 告诉您

    @Vegetable #11 奇数和奇数 的情况呢 好像没有考虑呦
    @lllue #12 厉害厉害 学习了 谢谢您
    @pushback #13 嘿嘿 这个仅仅是跳过当前不符合条件 下面该干嘛干嘛的。 您这段代码没有实现我的需求哦

  • 資深大佬 : Vegetable

    @whatCanIDoForYou #14 奇数和奇数也是的,两个奇数相当于(1 or 1) and 1,结果也是 1

  • 資深大佬 : pushback

    @whatCanIDoForYou 没有,我只是重新罗列了一下,上面说按步长的情况在乱序数组里面不适用

  • 資深大佬 : cigarzh

    for (int j = 1; j <= 20 ; j=j+((~(i&1)&j&1)==1?2:1)) {

    初始化的 ij 不能都为偶数

  • 資深大佬 : msg7086

    这不是 B 格高,这属于代码混淆,把原本思路清晰的代码改写成一个星期后的自己也看不懂的代码。

  • 主 資深大佬 : whatCanIDoForYou

    @Vegetable #15 学习力一波 了解了 谢谢您 哈哈哈哈哈哈

    @msg7086 #18 对的,就是 无聊玩一玩 回忆回忆基础的小美好

  • 資深大佬 : superJava

    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)));
    });
    });
    }

  • 主 資深大佬 : whatCanIDoForYou

    @superJava #20 1.8 新特性 good 谢谢您~

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具