已解決關於方法調用的問題
提問者:花哨丶涼了碎 | 瀏覽次 | 提問時間:2017-02-11 | 回答數量:9
我在練習方法的調用以下是我自己編的一個程序:public class TestMethod{public static void main(String[]args){m(2);m1(1,2);m2(2+3);m3(3,4);int i=m3(3,4); System.out.println(i);} public static void m(int i){System.out.println(i);}public static void m1(int i,j){System.out.println(\"i\"+\"j\");}public static void m2(int i+j){System.out.println(\"i+j\");}public static void m3(int i,j){if(i<j?i:j)return;}}運行後的結果:機器顯示的結果是什麼意思?我覺得我沒編錯啊
已有9條答案
m3你定義的是無返回方法
m1(int i, int j) 應該這樣寫
曾在黑暗中狂奔
回答數:62 | 被采納數:110
為什麼m1(int i, int j)一定要這樣寫?我寫成m1(int i,j) 好像也是一個意思啊。
我寫的m3應該是可以返回的,我用的if語句,3<4 所以返回i=3 然後打印i
LZ 你要這樣寫就對了
public class TestMethod{
public static void main(String[]args){
m(2);
m1(1,2);
m2(2, "+", 3);
m3(3,4);
int i = m3(3,4);
System.out.println("m3Reson = " +i);
}
public static void m(int i){
System.out.println("mReson = " +i);
}
public static void m1(int i, int j){
System.out.println("m1Reson = " +i +"+" +j);
}
public static void m2(int i, String operate, int j){
System.out.println("m2Reson = " +i +operate +j);
}
public static int m3(int i, int j){
if (i < j) {
return i;
}
return j;
}
}
簡單的舉例給你聽函數的形參定義和傳遞 以及 輸入的格式書寫
就本帖例子而言
此方法
public static void m2(int i, String operate, int j)
首先聲明一下,如果外部類不調用此方法的話,建議使用private私有類型
此方法的基本含義如下:
定義了一個靜態的公有方法m2無返回類型,傳遞的參數有三個分別為
int i 整型
String operate 字符串型
int j 整型
這些i j operate 隻是一個形參 不代表具體的含義,因此可以更換其他的標識符如
public static void m2(int neo, String neoneo, int neoneoneo)
其跟上麵的方法是一樣的
輸出類型
System.out.println("m2Reson = " +i +operate +j);
表示輸出一個字符串的意思
首先輸出一部分字符串常量m2Reson = 因為是常量字符串所以要用引號
其次接著輸出形參i的值
再其次輸出形參operate的值 因為是個形參字符串類型所以不需要用引號
最後輸出形參j的值
可以這麼理解要輸出的是字符串類型,因此要用+號把所有小部分都連接起來形成一個長的字符串
所以就寫成"m2Reson = " +i +operate +j 這個樣!
實際運行的理論
前麵main函數中調用此方法傳遞參數m2(2, "+", 3)
實際上
這個數字2 在內部已經傳遞給了i
這個字符串+ 在內部已經傳遞給了operate
這個數字3 也已經傳遞給了j
因此形參i operate j這三個
分別就攜帶著實際的值 2 + 3
來充當這幾個實際值的載體從而進行m2方法的計算
輸出的方式為m2Reson = " +i +operate +j
這些+號隻是為了連接各個小部分的,因此不作為輸出的對象
可以看成輸出m2Reson =i operate j
再把這個載體中的實際值呈現出來
就是最後的輸出結果m2Reson = 2+3 了
neo_pang 非常感謝你!
我是初學者,對於Reson 和operate的具體表示意思還不明白,因為還沒學到。 但是看了你說的後,我明白了點。不過就這個例子我還有幾個問題想問下你:
1.在語句System.out.println("m2Reson = " +i +operate +j);中為什麼要寫成m2Reson ,直接寫成("m2 = " +i +operate +j)難道不能輸出一個字符串嗎?按照你寫的程序運行的結果是:
mReson = 2
mReson = 1+2
mReson = 2+3
mReson = 3
我的意願是輸出這個結果:
m = 2
m = 1+2
m = 2+3
m = 3
也就是說能否在運行結果中去掉Reson ?
2. 在這個方法public static void m1(int i, int j)裏,括號裏麵為什麼對i和j這兩個變量一定要分別定義,而不能一次定義完?比如寫成這樣public static void m1(int i, j)可不可以?
3. 為什麼常量字符串要加引號而形參字符串類型不加引號?這是Java的規定嗎?
4. 最後那個m3方法中 像我這樣寫錯在了哪裏?
public static void m3(int i,j){
if(i<j?i:j)
return;}
我想表達的意思就是如果i小於j則選擇i的值,然後返回,進行 int i=m3(3,4);的操作,將i的值賦給i然後運行下一句話System.out.println(i); 打印i的值。在這裏我有沒有什麼地方寫錯了?
1)答:是可以的去掉Reason 我隻是為了區別才定義的這個Reason
2)答:傳遞的是兩個參數,而參數的定義 必須是有類型和標識符組成的,所以每個參數都要有int j這樣
3)答:常量字符串要加引號是表示引號內的值為該字符串的真值,形參字符串類型隻是一個載體不加引號表示載體中的實際字符串真值
4)答:應該這樣寫
if (i < j ? true: false){
return i;
}
return j;
neo_pang :
我最後一句這樣寫可不可以:
return i < j ? i : j