在函数中添加后,结果不正确

时间:2012-05-30 12:09:55

标签: java

我有一个java程序,它没有返回正确的答案,我无法弄清楚为什么。这是代码:

public class hello {
    public static void main(String[] args) {
        int a =5;
        doubleNumbers(a);
        System.out.println(" 5 doubled is:"+a);
    }

    private static void doubleNumbers(int a) {
        a = 5*2;
    }
}

这是我在helloWorld之后的第一个java程序。

8 个答案:

答案 0 :(得分:6)

Java是pass-by-value,这意味着传递给函数的变量不会在其外部更改。

由于这是作业,我不会向您展示解决方案,只是告诉您返回计算的值。

答案 1 :(得分:3)

你没有从你的方法中返回任何东西

将其更改为

 private static int doubleNumbers(int a) { 
return a * 2; 
 } 

答案 2 :(得分:1)

我会更改方法doubleNumbers以返回计算结果,所以它看起来像这样:

private static void doubleNumbers(int a) {
    return a*2;
}

然后更改main方法中的行:

int a = 5;
a = doubleNumbers(a);

此外,doubleNumbers只会在原始实现中返回10。您需要使用传入的a变量,如上面的代码所示。

答案 3 :(得分:1)

您的代码存在两个问题。首先,您应该更改doubleNumbers方法以返回一些内容,然后您应该将print语句更改为打印返回值的位置。

例如

(在伪代码中,所以你必须考虑它!):

method doCalculation{
....
return calculated answer
}

main{
....
Print(doCalculation)
}

答案 4 :(得分:0)

Java中的原始类型通过值传递而不是通过引用传递。 您需要Object-type才能通过引用传递它 试试这个:

 private static void doubleNumbers(Integer a) {
a = a*2;
 }

答案 5 :(得分:0)

有两个明显的问题:

  1. 您不会将doubleNumbers()的返回值分配给任何变量。
  2. doubleNumbers()未返回值(将void替换为int

答案 6 :(得分:0)

public class hello {


     public static void main(String[] args) 
     {
       int a =5;
       a = doubleNumbers(a);

       System.out.println(" 5 doubled is:"+a);

     }

     private static int doubleNumbers(int a) {
       return a*2;
     }

}

每个变量都有一个上下文,默认情况下仅限于使用它的函数。

a功能中的doubleNumbers()与第一个功能不同。

您需要返回结果,并将其分配给原始a变量

答案 7 :(得分:0)

更好的方法是将double Numbers()方法从void更改为int,这样它就可以返回,而不是仅打印a,而是打印现在的方法它会使a加倍。 我还添加了Scanner,因此程序不会只加倍5,而是输入任何数字。

public class Hello {
  public static void main(String[] args) {
    Scanner myScn = new Scanner(System.in);
    System.out.println("Please enter a number: ");
    int a = myScn.nextInt();
    //doubleNumbers(a);
    System.out.println(a+ " doubled is:"+doubleNumbers(a));

  }

  private static int doubleNumbers(int a) {
    int x = a*2;
        return x;
  }
}