Java函数的其他问题

Java函数的其他问题,java,function,if-statement,Java,Function,If Statement,所以我的功能有点问题 static int syracuse(int x){ if (x%2==0){ return x/2; else{ return 3*x+1; } } } 所以我的问题是:如果x是偶数,则返回x/2,如果是奇数,则返回x。返回3x+1。但是,当我试图编译java时,它告诉我('else'和'if')我不知道该怎么办: 为什么我需要一个别的,如果 你的牙套放错了位置 static int syracuse(int

所以我的功能有点问题

static int syracuse(int x){
    if (x%2==0){
      return x/2;
    else{
      return 3*x+1;
    }
   }
  }
所以我的问题是:如果x是偶数,则返回x/2,如果是奇数,则返回x。返回3x+1。但是,当我试图编译java时,它告诉我('else'和'if')我不知道该怎么办:


为什么我需要一个别的,如果

你的牙套放错了位置

static int syracuse(int x){
    if (x%2==0){
      return x/2;
    }
    else{
      return 3*x+1;
    }
}
PS:我不是java专家,所以我不确定x/2是否可以在返回时转换为int

if (x%2==0){
      return x/2;
改为:

if (x%2==0){
      return x/2;
}

您的问题是大括号不匹配:

static int syracuse(int x){
    if (x%2==0){
      return x/2;
    } else {
      return 3*x+1;
    }
}

使用像Eclipe这样的IDE。使发现不匹配的大括号变得更容易。如果你经常调用它,你可能需要执行一个ANDing操作以获得巨大的性能提升。@Thilo,
If(x&0x01){return 3*x+1;}否则{return x/2;}
应该快得多。@John:为了编译它,它需要是'If((x&0x01)=1)`对于1到1000000的整数,在紧循环中运行这两个版本的方法并没有速度上的差异。@Thilo我不是java程序员,但它只是一个逻辑示例。我所说的“很多”是指如果他在做数学方程式时数千万次地称之为“很多”。一百万不是很多。尝试5000万次迭代。我已经在Perl中完成了,结果在Java中可能会有很大的不同。请记住,时间效用不是最准确的东西,但它是一个像样的基本指标,像这样。