Java 在函数中添加后的结果不正确
我有一个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) {
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;
}
}