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

Java 在函数中添加后的结果不正确,java,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) {

我有一个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程序。

您没有从方法返回任何内容

换成

 private static int doubleNumbers(int a) { 
return a * 2; 
 } 
Java是,这意味着传递给函数的变量不会在函数外部更改


由于这是家庭作业,我将不向您展示解决方案,而是告诉您返回计算值。

Java中的原语类型是按值传递的,而不是按引用传递的。 您需要对象类型来通过引用传递它 试试这个:

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

有两个明显的问题:

  • 您不会将
    doubleNumbers()
    的返回值分配给任何变量
  • doubleNumbers()
    不返回值(将
    void
    替换为
    int

  • 我将更改方法
    doubleNumbers
    ,以返回计算结果,因此它看起来像这样:

    private static void doubleNumbers(int a) {
        return a*2;
    }
    
    然后更改主方法中的行:

    int a = 5;
    a = doubleNumbers(a);
    
    而且,
    doubleNumbers
    在原始实现中只返回10。您需要使用传入的
    变量,如上代码所示

    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;
         }
    
    }
    
    每个变量都有一个上下文,默认情况下仅限于使用它的函数

    doubleNumbers()
    函数中的
    a
    与第一个函数不同


    您需要返回结果,并将其分配给原始
    a
    变量您的代码有两个问题。首先,您应该更改doubleNumbers方法以返回某些内容,然后您应该将print语句更改为打印返回值的位置

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


    更好的方法是将double Numbers()方法从
    void
    更改为
    int
    ,这样它就可以返回,也可以不打印
    A
    ,而是打印方法,因为现在它会将
    A
    加倍。 我还添加了扫描器,这样程序就不会把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;
      }
    }
    

    确保你在你的书中跟随;它应该讨论返回值等。好的,我想我现在明白了。它与我的新代码一起正常工作。我现在该怎么处理这个问题呢?删除它?他们如何决定谁的答题得分?很抱歉我的问题,这是我第一次来这里。事实上,这是一个很棒的问题。你可能会考虑改变标题,所以更容易找到其他人。除此之外,你应该像之前建议的那样阅读新的标题。新标题听起来合适吗?我有点困惑,你是如何把你的问题提高到让更多的人看到的。这听起来很难做到。。例如:共有七个答案,但只有一个向上投票?我现在更改了标题(不包括答案,而是症状)并重新修改了代码(因为这使代码更容易被人阅读),但必须首先由主持人审核。所有原语都是按值传递的,但是所有其他对象都是通过引用传递的。@twall:错了。Java中的所有内容都是按值传递的,但是引用是按值传递的;这些对象根本不会被传递。这是不同的。
    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;
      }
    }