課堂練習題
if...else練習
關係判斷,讓使用者輸入兩數字x與y,判斷x、y的關係是相等、x大於y、x小於y
Scanner s=new Scanner(System.in);
System.out.print("請輸入x:");
int x=s.nextInt();
System.out.print("請輸入y:");
int y=s.nextInt();
if(x==y){
System.out.println(x+"=="+y);
}else if(x>y){
System.out.println(x+">"+y);
}else{
System.out.println(x+"<"+y);
}
-------------------------------
請輸入x:10
請輸入y:16
10<16
記得要看到 } 下括弧才可以打else,else不是在哪個位置都可以打,要小心注意
switch case練習
- 指令要用何種運算 有10、13兩整數,請使用者輸入其中(+ - * / )其中一個運算子,將運算結果輸出給使用者
//PURPOSE:輸入運算子,將兩數值進行運算
Scanner s=new Scanner(System.in);
int x=10;
int y=13;
System.out.print("請輸入+ - * /其中一個運算子:");
String operator=s.next();
switch(operator){
case "+":
System.out.println(x+"+"+y+"="+(x+y));
break;
case "-":
System.out.println(x+"-"+y+"="+(x-y));
break;
case "*":
System.out.println(x+"*"+y+"="+(x*y));
break;
case "/":
System.out.println(x+"/"+y+"="+(x/y));
break;
default:
System.out.println("你輸入了錯誤的運算子");
break;
}
------------------------------
請輸入+ - * /其中一個運算子:+
10+13=27
( + - * / )輸入的型態可以選擇用string不能選擇用int
case 的部份旁邊擺的是(operator)的值,由於他是string,所以下方都要用" "刮起來
default跟break又被遺忘了,絕對要注意不能遺忘他們兩個
迴圈
- 求出30以下所有5的倍數
//PURPOSE:求出30以下所有5的倍數
for(int i=1;i<=30;i++){
if(i%5==0){
System.out.print(i+" ");
}
}
給長寬排出圖形
下面範例為 長=4 寬=2
//PURPOSE:給長寬,排出圖形
Scanner s=new Scanner(System.in);
System.out.print("請輸入圖形的長:");
int length=s.nextInt();
System.out.print("請輸入圖形的寬:");
int width=s.nextInt();
for(int i=1;i<=width;i++){
for(int j=1;j<=length;j++){
System.out.print("#");
}
System.out.println("");
}
------------------------------------
請輸入圖形的長:4
請輸入圖形的寬:2
####
####
先想的想出是兩層for迴圈再繼續
排出底為5顆*的三角形
//PURPOSE:排出底為5的三角形
int n=5;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println("");
}
--------------------
*
**
***
****
*****
進階題: 請用迴圈排出以下三角形
1
22
333
4444
55555
排出底為n的三角形圖案
//PURPOSE:排出底為N的三角形圖案
final int N=7;
for(int i=N/2;i>=0;i--){
for(int j=1;j<=N;j++){
if((j>i)&&(j<=N-i)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
-------------------------------
*
***
*****
*******
進階題:排出菱形圖案
*
***
*****
*******
*****
***
*
列出所有小於100的質數
boolean IsPrime=true; //一定要給初值,不然下面做if判斷有可能會判斷到空值
for(int i=2;i<=100;i++){
for(int j=2;j<=Math.sqrt(i);j++){//若不是質數,會被小於自己開根號的數給整除
if(i%j==0){//若可以整除
IsPrime=false;
break;
}
}
if(IsPrime){
System.out.println(i);
}else{
IsPrime=true;//這行非常重要!!!請一定要加這行
}
}
此題直接聯想的話,可以很簡單聯想到,一個質數就是不會被比它小的數值整除,用這個方式撰寫是最直觀的。
//若不用數學公式來計算此題
for(int i=2;i<=100;i++){
for(int j=2;j<i;j++){
.....
}
}
但為了程式效率考量,我們使用數學公式,才可以大幅降低程式執行時間
if(i%j==0){//若可以整除
IsPrime=false;
break;
}
此行有無加上break將會大幅度影響程式執行速度,初學者往往會少寫了break這一行。
一個數只要發現一個可以整除它的因數,它就100%不是質數了,所以我們到這裡就可以直接換跑下一個數值了。