【问题标题】:How to write a method which takes int args either 0 or 1 and gives output 1 or 0如何编写一个将 int args 设为 0 或 1 并给出输出 1 或 0 的方法
【发布时间】:2015-05-02 13:34:09
【问题描述】:

我想编写一个方法,它接受 int args 0 或 1 并给出输出 1 或 0。这意味着如果我将输入作为 0 它应该返回 1,如果输入是 1 应该返回 0。但问题是我不能使用 if else、三元运算符或任何集合。

方法的行为应该是这样的:

public int myMethod(int i)
{
    return j; // if i is 0 then j should be 1 and vice versa.
}

【问题讨论】:

  • 其他输入应该怎么做?
  • 没有输入固定为 0 或 1。如果输入为 0,则输出应为 1。如果输入为 1,则输出应为 0
  • 那么该方法的输入不是固定的 - 所以你需要考虑如果输入不是 0 你会做什么或 1. 没有什么可以阻止某人拨打myMethod(2)。您可能会明确地说,在这种情况下结果是未定义的(它可以是任何东西),但您至少应该考虑一下。
  • @jon 这是一个面试问题
  • 那么在那个时候询问需求是个好主意。

标签: java logic


【解决方案1】:
return 1-input;

input 是传入的值。

【讨论】:

  • 它工作正常。多谢。 +1 为你的答案。网站限制我接受你的回答。我会在 6 分钟后接受它
【解决方案2】:

这应该可行:

return Math.abs(i-1);

【讨论】:

    【解决方案3】:
    public int myMethod(int i){
        return 1^i;
    }
    

    这将执行异或运算。 if i = 0 -> 返回 1,如果 i = 1 返回 0。假设输入 i 是 0 或 1 ...

    【讨论】:

      【解决方案4】:

      受 Saraubh 启发,在返回之前也要检查输入。

      public int myMethod(int i)
      {
          if (i != 0 && i != 1)
          {
              throw new IllegalArgumentException("Input should be 0 or 1");
          }
          return 1 - i;
      }
      

      【讨论】:

        【解决方案5】:

        这个问题很有趣。以下是其他可能的方法:(实际上有点不切实际和昂贵,只是为了您的兴趣......)

        public int myMethod(int i)
        {
            return (int)Math.asin(Math.cos(i));
        }
        

        或

        public int myMethod(int i)
        {
            return ("10").indexOf(i+"");
        }
        

        【讨论】:

          【解决方案6】:
          public int myMethod(int i)
              {
                  if (i != 0 && i != 1)
                  {
                      throw new IllegalArgumentException("Input should be 0 or 1");
                  }
                  return Integer.parseInt(new String(("10").charAt(i)));
              }
          

          【讨论】:

            【解决方案7】:

            可能是最简单的解决方案:

            public int myMethod(int i)
            {
                return 1-i;
            }
            

            或

            public int myMethod(int i)
            {
                int j = 0;
                if (i == 0) {
                    j = 1;
                }
                return j;
            }
            

            【讨论】:

            • 你不能使用 if 和 else;因此排除了第二种解决方案:)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-26
            • 1970-01-01
            • 2021-05-03
            • 1970-01-01
            • 1970-01-01
            • 2018-04-12
            相关资源
            最近更新 更多