从用户获取新号码

时间:2016-01-27 03:13:04

标签: java

新号码不会切换,我不知道为什么,它读起来很好,但不会接管旧号码。

 private static void newNumber(int num, Scanner kb)
 {         
     System.out.println("Enter in a value: ");
     num = kb.nextInt();

     if (num < 0)
     {
        System.out.println("Number not accepeted, enter a non negative number");
     }
     else
     {
        System.out.println("New number you entered was: " + num);
     }  
}

2 个答案:

答案 0 :(得分:0)

为什么使用nextInt()方法?你可以num++这就是我要做的事情:

 private static void newNumber(int num)
 {         
     num++;

     if (num < 0)
        System.out.println("Number not accepeted, enter a non negative number");

     else
        System.out.println("New number you entered was: " + num);
}

此外,由于这是一个方法,您应该在方法之前获取用户输入,并将其作为参数进行处理,您已为其设置但从不使用。

答案 1 :(得分:0)

Java是pass by reference。您不能通过将原始类型(例如整数)的值传递给函数来修改它的值,因为该变量的值传递给函数,而不是指向它的指针。无论你在函数中改变什么,都只发生在函数内部。您可以通过以下两种方式之一解决问题:

解决方案1:修改函数以返回值并指定您需要更改的变量作为函数调用的结果。该功能将如下所示:

private static void newNumber()
{         
     int userInput;
     // get user input, error check
     return userInput;
}

电话会是这样的:

myInt = newNumber();

请注意,您无需传递Scannerint,因为您可以将其全部放入newNumber函数中(除非您要重复使用Scanner你之前创建的对象。)

解决方案2:int封装在一个类中。对于这个问题,这可能是不必要的和过于复杂的,但是如果你在其中创建一个带有int的类,你可以在其中创建一个带有int的对象,将指向该对象的指针传递给一个函数,并使用该指针作为它仍将指向您之前创建的对象。