【问题标题】:Java code to flip 0 to 1将 0 翻转为 1 的 Java 代码
【发布时间】:2018-06-27 20:59:26
【问题描述】:

如何在不使用循环、位运算符、逻辑运算符、if-else、switch-case 或三元运算符的情况下编写 Java 代码以将 0 翻转为 1,反之亦然。如果输入不是 0 或 1 则打印“错误”

【问题讨论】:

  • “不使用循环、位运算符、逻辑运算符、if-else、switch-case 或三元运算符”。所以不用编程......
  • 你的意思是你正在寻找一个内置的方法或库来做到这一点?因为看起来你想写没有代码的代码
  • x = 1 - xIf input is not 0 or 1 then print "error" 部分很难在没有任何分支的情况下完成......
  • 好吧,我无法抑制我的好奇心......为什么你不使用所有这些美妙的工具?
  • @L.Spillner 可能是一个家庭作业难题。

标签: java


【解决方案1】:

一些伪代码,“不使用循环、位运算符、逻辑运算符、if-else、switch-case 或三元运算符”:

int[] s = { 1, 0 }

try {
  x = s[x];
catch (OutofBoundsException) {
  print "error";
}

【讨论】:

  • 好。我的第一个想法是使用异常。
  • 为什么不翻转数组并丢失 1 - 部分?
  • 不过,这是一种边界混淆。
  • 仅仅因为你能达到这样的结果并不意味着你应该。以后的开发人员会花几分钟时间摸索。虽然我们可以假设这是一个家庭作业问题。
【解决方案2】:

这是使用不同异常的另一种解决方案:

public static void checkX (int x) {
    String message = "error";
    try {
        int y = 1/x;
        y = 1/(x-1);
    }
    catch (ArithmeticException exc) {
        x = 1 - x;
        message = Integer.toString (x);
    }
    System.out.println(message);
}

测试:

checkX(1);
checkX(0);
checkX(5);

输出:

0
1
error

【讨论】:

  • 很好,特别是因为异常处理了所需的输出。
【解决方案3】:

好吧,只是翻转值很简单:

int i = 0;
i = (i + 1) % 2;
System.out.println(i); // prints 1
i = (i + 1) % 2;
System.out.println(i);  // prints 0

我不知道“错误”是怎么回事

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多