新号码不会切换,我不知道为什么,它读起来很好,但不会接管旧号码。
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);
}
}
答案 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();
请注意,您无需传递Scanner
或int
,因为您可以将其全部放入newNumber
函数中(除非您要重复使用Scanner
你之前创建的对象。)
解决方案2:将int
封装在一个类中。对于这个问题,这可能是不必要的和过于复杂的,但是如果你在其中创建一个带有int的类,你可以在其中创建一个带有int的对象,将指向该对象的指针传递给一个函数,并使用该指针作为它仍将指向您之前创建的对象。