我有一个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程序。
答案 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)
有两个明显的问题:
doubleNumbers()
的返回值分配给任何变量。 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;
}
}