java函数程序,返回值存在问题
import java.util.Scanner;
public class 方法重载 {
public static void main(String[] args) { new 方法重载().run();
}
Scanner scanner = new Scanner(System.in);
int value = scanner.nextInt();
double number = scanner.nextDouble();
public void run () {
System.out.println(f(value));
System.out.println(f(number));
}
public int f(int value ){
return value > 0 ? value : value++;
}
public double f(double number ){
return number > 0 ? number : number++;
}
}
各位大牛们,小弟初学java,可能问的问题比较幼稚,望大牛们给予解答,弟弟在这里多谢了。
我在变数value中输入一个值“-3”,在变数number中输入一个值“-2.5”,这两个值被带入各自的函式中,第一个函式的返回值在value++的作用下(value = value + 1),应该变成-2啊
第二个函式的返回值在number++的作用下(number = number + 1),应该变成-1.5啊,为什么返回值还是“-3”和“-2.5”呢?
回答:
1.注意a++,++a,a--,--a
的区别:a++
:先返回a
,再把a
的值加1,++a
:先把a
的值加1,再返回;a--,--a
同理...
2.注意三木运算符的规则:condition ? value1 : value2;
,如果condition
为true
,返回value1
,否则返回value2
...
把上面代码改一下,就能达到你要的效果:
public class 方法重载 { public static void main(String[] args) {
new 方法重载().run();
}
Scanner scanner = new Scanner(System.in);
int value = scanner.nextInt();
double number = scanner.nextDouble();
public void run () {
System.out.println(f(value));
System.out.println(f(number));
}
public int f(int value ){
return value > 0 ? ++value : value;
}
public double f(double number ){
return number > 0 ? ++number : number;
}
}
回答:
这个主要是xxx++这个的执行是在本条语句执行完后才会执行,
而你本条语句就返回了,剩下的操作会被舍弃.
所以返回的就是原值了.
改成++XXX就好了.
回答:
return value++; //先返回再+1return ++value; //先+1再返回
回答:
建议先看谭浩强的C++程序设计这本书
以上是 java函数程序,返回值存在问题 的全部内容, 来源链接: utcz.com/p/171947.html