在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/云計算  Java/ java函數(shù)程序,返回值存在問題

java函數(shù)程序,返回值存在問題

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,可能問的問題比較幼稚,望大牛們給予解答,弟弟在這里多謝了。
我在變數(shù)value中輸入一個值“-3”,在變數(shù)number中輸入一個值“-2.5”,這兩個值被帶入各自的函式中,第一個函式的返回值在value++的作用下(value = value + 1),應該變成-2啊
第二個函式的返回值在number++的作用下(number = number + 1),應該變成-1.5啊,為什么返回值還是“-3”和“-2.5”呢?
圖片描述

回答
編輯回答
獨特范

1.注意a++,++a,a--,--a的區(qū)別:
a++:先返回a,再把a的值加1,++a:先把a的值加1,再返回;a--,--a同理...
2.注意三木運算符的規(guī)則: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;
    }
}
2018年9月20日 14:54
編輯回答
離魂曲

建議先看譚浩強的C++程序設計這本書

2018年5月30日 12:04
編輯回答
陪我終

這個主要是xxx++這個的執(zhí)行是在本條語句執(zhí)行完后才會執(zhí)行,
而你本條語句就返回了,剩下的操作會被舍棄.
所以返回的就是原值了.
改成++XXX就好了.

2018年4月5日 04:02
編輯回答
萌吟
return value++; //先返回再+1
return ++value; //先+1再返回
2018年5月17日 01:17