1. 程式人生 > >基本語法2-流程控制_練習

基本語法2-流程控制_練習

寫出結果。
class Demo
{
public static void main(String[] args)
{
int m=0,n=3;
if(m>0)

        if(n>2)
            System.out.println("A");    
    else
        System.out.println("B");

}

}

//沒有結果。

switch是否能作用在byte上,是否能作用在long上,是否能作用在String上
答:switch(expr1)中,expr1是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是
int、 short、 char 或者 byte。long不能作用於swtich.JDK1.7新加入了String型別。

從鍵盤分別輸入年、月、日,判斷這一天是當年的第幾天。
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println(“輸入year:”);
int year = scanner.nextInt();
System.out.println(“輸入month:”);
int month = scanner.nextInt();
System.out.println(“輸入day:”);
int day = scanner.nextInt();
int sumDay = 0;
switch (month) {
case 12:
sumDay += 30;
case 11:
sumDay += 31;
case 10:
sumDay += 30;
case 9:
sumDay += 31;
case 8:
sumDay += 31;
case 7:
sumDay += 30;
case 6:
sumDay += 31;
case 5:
sumDay += 30;
case 4:
sumDay += 31;
case 3:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
sumDay += 29;
else
sumDay += 28;
case 2:
sumDay += 31;
case 1:
sumDay += day;

    }
    System.out.println(year + "年" + month + "月" + day + "日是今年的第" + sumDay
            + "天");
}

}

寫出結果。
public class Demo{
public static void main(String []args){
int i = 0, j = 5;
tp: for (;;){
i++;
for(;;){
if(i > j–)
break tp;
}
}
System.out.println(“i = ” + i + “, j = “+ j); //i=1,j=-1;
}

}

1、 輸出從1到100之間所有的整數;
2、 輸出從1到100之間所有的奇數;
3、 輸出從1到100之間所有不能被3整除的數;並輸出這些整數的和

1)輸入長和寬,輸出長方形,如:輸入4和3, 將輸出如下圖形

#

#

#

2)輸入高度,輸出直角三角形。如:輸入4, 將輸出如下圖形
#

#

#

#

3)輸入高度,輸出倒直角三角形。如:輸入4, 將輸出如下圖形

#

#

#

#

列印九九乘法表

輸入兩個正整數m和n,求其最大公約數和最小公倍數
int m = 12, n = 28;
//獲取m和n的較大值
int max = (m > n)? m : n;
//獲取m和n的較小值
int min = (m < n)? m : n;

//求m和n的最大公約數
for(int i = min;i >= 1;i–){
if( m % i == 0 && n % i == 0){
System.out.println(“m和n的最大公約數是:” + i);
break;
}
}
//求m和n的最小公倍數
for(int i = max;i <= m * n;i++){
if( i % m == 0 && i % n == 0){
System.out.println(“m和n的最小公倍數是:” + i);
break;
}

}

分別使用if-else if-else語句和switch-case語句
根據用於指定月份,列印該月份所屬的季節。
//3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季

[answer]
if(x==3 || x==4 || x==5)
System.out.println(x+”春季”);
else if(x==6 || x==7 || x==8)
System.out.println(x+”夏季”);
else if(x==9 || x==10 || x==11)
System.out.println(x+”秋季”);
else if(x==12 || x==1 || x==2)
System.out.println(x+”冬季”);
else
System.out.println(x+”月份不存在”);

[第二種]
if(x>12 || x<1)
System.out.println(x+”月份不存在”);
else if(x>=3 && x<=5)
System.out.println(x+”春季”);
else if(x>=6 && x<=8)
System.out.println(x+”夏季”);
else if(x>=9 && x<=11)
System.out.println(x+”秋季”);
else
System.out.println(x+”冬季”);

[第3種]
public static void main(String[] args) {
int x = 4;
switch(x){
case 3:
case 4:
case 5:
System.out.println(x+”春季”);
break;

case 6:
case 7:
case 8:
    System.out.println(x+"夏季");
    break;
case 9:
case 10:
case 11:
    System.out.println(x+"秋季");
    break;
case 12:
case 1:
case 2:
    System.out.println(x+"冬季");
    break;
default:
    System.out.println("nono");

}

已知學生成績以100分為滿分,共分5個等級:A,B,C,D,E。
90~100為等級A,80~89為等級B,70~79為等級C,
60~69為等級D,0~59為等級E。
要求定義一個成績變數,當成績變化時,可直接知道該成績對應的等級。
例如:當成績為100時,該學生的等級時A。

class LevelDemo{
//定義一功能,通過給定分數,獲取該分數對應的等級。
public static void main(String[] args){
int num = 89;
if(num>=90 && num<=100)
System.out.println(“level = A”);
else if(num>=80 && num<=89)
System.out.println(“level = B”);
else if(num>=70 && num<=79)
System.out.println(“level = C”);
else if(num>=60 && num<=69)
System.out.println(“level = D”);
else
System.out.println(“level = E”);

}

}

1)列印1~100之間 6的倍數的個數。
2)求出1~100之間,既是3又是7的倍數的自然數出現的次數?

[answer1]
public static void main(String[] args) {
int count = 0;
for(int x=1; x<=100; x++){
if(x%6==0)
//System.out.println(“x=”+x);
count++;
}
System.out.println(“count=”+count);

/*
計數器思想。
通過一個變數記錄住資料的狀態變化。
*/

}
[answer2]

求調和級數中從第多少項開始值大於10,調和級數的第n項形式為:1+1/2+1/3+…+1/n

(略)

3000米長的繩子,每天減一半。問多少天這個繩子會小於5米?不考慮小數。
[answer]
public static void main(String[] args){
int day = 0;
for(int x=3000; x>=5; x/=2){
day++;
}
System.out.println(“day=”+day);
/*
方法二:
day = 0;
for(int x=3000; x>=5; day++)
{
x = x/2;
}
System.out.println(day);
*/
}

編寫程式,判斷給定的某個年份是否是閏年。
閏年的判斷規則如下:
(1)若某個年份能被4整除但不能被100整除,則是閏年。
(2)若某個年份能被400整除,則也是閏年。

if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){}

利用程式輸出如下圖形:
*

*
for (int i = 0; i < 7; i++) {
if(i < 4){
for (int j = 0; j < 2 * i + 1; j++) {
System.out.print(“* “);
}
System.out.println();
}else{
for (int k = 0; k < 13 - 2 * i; k++) {
System.out.print(“* “);
}
System.out.println();
}

}

【拓展】
列印如下圖形
*
* *

  • *
    *
    //上半部分
    for(int i = 0;i < 5;i++){
    //輸出“-”
    for(int j = 0;j < 4-i;j++){
    System.out.print(” “);
    }

    //輸出“* ”
    for(int k = 0;k < i+1;k++){
    System.out.print(“* “);
    }
    System.out.println();
    }
    //下半部分
    for(int i = 0;i < 4;i++){
    for(int j = 0;j < i+1;j++){
    System.out.print(” “);
    }
    for(int k = 0;k < 4-i;k++){
    System.out.print(“* “);
    }
    System.out.println();

}

要求使用者輸入兩個數a和b,如果a能被b整除或者a加b大於1000,則輸出a;否則輸出b。

一個數如果恰好等於它的因子之和,這個數就稱為”完數”。(因子:除去這個數本身正的約數)
例如6=1+2+3.程式設計 找出1000以內的所有完數
public class WanShu {
static int count;
public static void main(String[] args) {
int factor=0;
for (int i = 1; i <= 1000; i++) {
for (int j = 1; j < i; j++) {
if(i%j==0)
factor+=j;
}
if(factor == i){
System.out.println(i);
count++;
}
factor=0;
}
System.out.println(“1-1000之間的完數個數為:”+count);
}
}

寫一個程式,找出4位數的所有吸血鬼的數字
例如:1260=21*60
1827=21*87

public class Test2 {
public static void main(String[] args) {
for (int num = 1001; num < 10000; num++) {
math(num);
}
}

public static void math(int num) {
    int[] temp1 = new int[2]; 
    int[] temp2 = new int[2]; 

    int a = num / 1000;
    int b = num / 100 % 10;
    int c = num / 10 % 10;
    int d = num % 10;
    int[] data = { a, b, c, d };
    for(int i = 0;i<data.length;i++){
        for(int j = 0;j < data.length;j++){
            if(i == j){
                continue;
            }
            temp1[0] = data[i];
            temp1[1] = data[j];
            for(int m = 0;m<data.length;m++){
                if(m != i && m != j){
                    temp2[0] = data[m];
                    for(int n = 0;n<data.length;n++){
                        if( n != i && n != j && n != m){
                            temp2[1] = data[n];
                            multi(data,temp1,temp2);
                        }
                    }
                }
            }
        }
    }
}
public static int toInt(int[] temp){
    int m = 0;
    int[] temp1 = new int[temp.length];
    for(int i = 0;i < temp.length;i++){
        temp1[i] = temp[i]*(int)Math.pow(10, temp.length-1-i);
    }
    for(int i = 0;i < temp1.length;i++){
        m+=temp1[i];
    }
    return m;
}
public static void multi(int[] temp ,int[] temp1,int[] temp2){
    int i = toInt(temp1);
    int j = toInt(temp2);
    int k = toInt(temp);
    if(k == i*j){
        System.out.println(k + "=" + i + "*" + j);
    }
}

}

/*
輸出所有的水仙花數,所謂水仙花數是指一個3位數,其各個位上數字立方和等於其本身。
例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

*/
class ShuiXianHua{
public static void main(String[] args){
for(int i = 100;i < 1000;i++){//實現所有的三位數的一個遍歷
int j1 = 0;
int j2 = 0;
int j3 = 0;
j1 = i / 100;//百位
j2 = (i - 100*j1) / 10;//十位
j3 = i - 100*j1 - 10*j2;//個位

        if( i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){
            System.out.println("此數值為滿足條件的水仙花數:" + i);
        }
    }
}

}

在JAVA中,如何跳出當前的多重巢狀迴圈?
答:用break; return 方法。