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;,如果conditiontrue,返回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++; //先返回再+1

return ++value; //先+1再返回

回答:

建议先看谭浩强的C++程序设计这本书

以上是 java函数程序,返回值存在问题 的全部内容, 来源链接: utcz.com/p/171947.html

回到顶部