2016-09-20 80 views
-1

我已经写了一个函数类来获取最大输入作为输出,但结果是错误的。我不知道为什么,下面是我的代码:计算最大值时出现错误结果

public class Test { 
    public int max(int a, int b) { 
     if(a > b) 
      return a; 
     else { 
      swap(a, b); 
      return a; 
     } 
    } 

    private void swap(int a, int b) { 
     // TODO Auto-generated method stub 
     int tmp = a; 
     a = b; 
     b = tmp; 
    } 

    public static void main(String[] args) { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 

在这种情况下,我的结果是3而不是6

+0

的JavaScript不是Java。 – Li357

+3

请参阅:http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value?rq=1以及为什么您需要交换方法? – Li357

+0

我想要一个最大值 – Jingwei

回答

0

@Jingwei为什么哟具有交换功能?

要获得的2个整数以下max是程序

public class Test { 
    public int max(int a,int b) 
    { 
     if(a > b) 
      return a; 
     else 
      return b; 
    } 

    public static void main(String [] args) 
    { 
     Test t = new Test(); 
     int max = t.max(3, 6); 
     System.out.println(max); 
    } 
} 
+0

我想要一个最大值。实际上,我的问题是为什么swap()不起作用? – Jingwei

+0

Swap()不交换变量,但传递变量的副本,但不传递指针。那是因为你没有为整个班级使用静态变量。声明'a'作为类的变量,然后你的交换应该工作。我可以写一个样本。 – talisman027

+0

你是什么意思:Swap()不交换变量,但变量的副本被传递,你没有传递指针。 – Jingwei