利用Scanner來做
只能用if
不能用迴圈做
就是用最基礎的邏輯判斷來做
輸出最大值
作法相似於下面的
我只會兩數比大小
下面是我寫的
import java.util.Scanner;
public class S比大小 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int a,b;
System.out.print("Enter first integer");
a=input.nextInt();
System.out.print("Enter second integer");
b=input.nextInt();
if(a>b );
System.out.printf("max is %d\\n",a);
if(a
System.out.printf("max is %d\\n",b);
if(a==b );
System.out.printf("max is %d\\n",b);
}
}
2006-11-10 05:05:53 · 2 個解答 · 發問者 rayray 1 in 電腦與網際網路 ➔ 程式設計
可以在不要使用到else if的情況下輸出嗎
2006-11-10 08:56:20 · update #1
"最基礎的邏輯判斷"
應該說是用數學的方式來判斷大小會比較適當
2006-11-10 09:03:30 · update #2
因為老師還沒敎到esle的用法
他又敎到and和or的邏輯判斷
所以要求在不使用到esle的用法下輸出
我有想到用2*a-(b+c)>0的方式來判斷
但這種方式有些狀況會有錯誤
會規定這樣是因為他要求我們作邏輯方面的判斷
由最簡易的程式碼輸出
不要透過迴圈或esle來輸出
2006-11-10 12:28:57 · update #3
二樓大大:阿泯
的寫法好像在某些情況下也是錯誤的
在輸入9.9.6的情況下是錯的
好像也少個"}"
2006-11-10 12:37:45 · update #4
不過如果照阿泯的寫法
輸入相同數時
會print出三個數值耶
如輸入2.2.2
會輸出
最大數2最大數2最大數2
2006-11-10 15:30:07 · update #5
只能輸出一次最大值
2006-11-10 15:33:32 · update #6
這是我昨天寫出來的
我們老師所要求的應該是這種意思
不用esle是因為他還沒敎到
加上他要求用最簡單的感覺是寫
也許以後他也會要求我用if-esle來寫吧
2006-11-11 06:23:49 · update #7
if(a>b&a>c||a==b&c==a||a==c&a>b)
System.out.print("最大數"+a);
if(b>a&b>c||b==a&b>c||b==c&b>a)
System.out.print("最大數"+b);
if(c>a&c>b)
System.out.print("最大數"+c);
2006-11-11 06:24:25 · update #8
這是我寫的另外一種方法
不過沒有用到if
但這種方法我沒有很熟悉
int max = a;
max = ( max > b) ? max : b;
max = ( max > c ) ? max : c;
max = ( max > d ) ? max : d;
System.out.printf("max is %d\n",max);
2006-11-11 06:27:19 · update #9
第一種方法
寫起來很複雜
很容易就判斷錯誤
如果是四個數字比大小的話
就會更複雜
所以我就試了一下第二種方法
沒有用到if
而我也沒有很了解第二種的寫法意思
可能是一知半解而已
可以說明一下嗎
我的感覺是
先設a是最大
當a比b小時
就把max換成b
以此類推下去吧?
2006-11-11 06:32:52 · update #10
感謝阿泯的不吝指教
對於所要思考的問題
那個我知道
不過我讀的不是資工那一類的科系
而程設在我讀的科系也沒有被視為重點科目
可是我有種想把程設學好一點的感覺
所以能這樣的跟程設利害的人請教這些問題
還滿高興的
2006-11-11 08:01:40 · update #11
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("請輸入第1各數字");
int a = input.nextInt();
System.out.print("請輸入第2各數字");
int b = input.nextInt();
System.out.print("請輸入第2各數字");
int c = input.nextInt();
//這種程式就是屬於判斷的程式不用if...else 架構~只能說很難寫
//交你最簡單的方式寫就是邏輯判斷你可以不用使用到這麼多的else if
//只要if ~else if~else 三層架構就能輕易破解三種數值比大小~
if (a>b && a>c) {//A大於B 且 A又大於C 當然就A最大囉
System.out.print("最大數"+a);
} else if (b>a && b>c ) {//B大於A 且 B又大於C 當然就B最大囉
System.out.print("最大數"+b);
} else { //跑到這層else 代表前面判斷都不成立那就只有C最大囉
System.out.print("最大數"+c);
}
}
2006-11-10 20:00:11 補充:
在輸入9.9.6的情況下是錯的 拍謝喔~一開始只是針對你方法回答如果你輸入的遇到相同數字的話在大於旁邊加上等號就解決這問題了例:if (a>=b && a>=c)
2006-11-10 20:03:40 補充:
if (a>=b && a>=c) {System.out.print("最大數"+a);}if (b>=a && b>=c ) {System.out.print("最大數"+b);} if (c>=a && c>=b ) {System.out.print("最大數"+c);}不用else 很簡單就只是不把架構寫在一起分開寫而已如上
2006-11-11 00:24:29 補充:
最大數2最大數2最大數2 當然會出這樣問題你只用單用if架構的話要避免這種情形只能在用巢狀IF去解決只是把程式碼複雜化而已所以才會有就是為什麼會有if跟else還有else if架構來解決這種問題ㄚ~如果我單用if架構的話把你的問題寫到沒有bug你可能會看不懂我再寫什麼光程式碼就很亂了~你還是盡快學會else跟else if 架構比較實在
2006-11-11 11:39:47 補充:
max = ( max > b) ? max : b; <<-這種寫法叫三元運算~不過我還是覺得針對題目去用適合題目的解法你用這種寫法寫~只是在把簡單問題複雜化~你懂ㄇ把程式寫出來得到答案除了要一針見血程式碼易了解還要考慮效能的問題~不是單單只有把題目解出來而已這是當成工程師要最要思考的問題~
2006-11-11 11:47:02 補充:
max = ( max > b) ? max : b; max = ( max > c ) ? max : c; max = ( max > d ) ? max : d; 這種寫法邏輯暴力比對法一開始MAX變數假設為最大值在跟B最比較如果MAX>B大表還是MAX最大遇到大於MAX的就取代另一各值依祇類堆~以後你還會學到資料結果就會學到一種方法叫暴利比對法~就是利用這種原理~去運作的
2006-11-12 00:06:59 補充:
不用客氣~有需要指教在加入我的MSNㄅ
2006-11-12 00:09:04 補充:
還有寫程式跟你讀哪一科沒有關ㄒ別把自己侷限了~想學就學~寫程式也可以當作是興趣起碼我把寫程式都當成興趣再寫~雖然要學很多東ㄒ~但依點都不會覺得累~
2006-11-10 11:31:15 · answer #1 · answered by Sam 4 · 0⤊ 0⤋
上方要求使用者輸入跳過: 判斷邏輯如下
if( a > b )
{
if( a > c )
{
// a 最大
}
else if( a == c)
{
// a && c 一樣大 都最大
}
else
{
// c 最大 因為a 比他小
}
}
else if( a < b)
{
if( b > c )
{
// b 最大
}
else if( b == c)
{
// b && c 一樣大 都最大
}
else
{
// c 最大 因為b 比他小
}
}
else if( a == b )
{
if( a < c )
{
// c 最大
}
else if( a == c)
{
// a, b, c 三個都一樣大
}
else
{
a && b 一樣大 c 最小
}
}
2006-11-10 05:15:41 · answer #2 · answered by 安德魯 1 · 0⤊ 0⤋