练习:30

原题:
依次输入五句话,然后将它逆序输出.

参考源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
 * 依次输入五句话,然后将它逆序输出.
 */
import java.util.Scanner;
public class P169_22{
    public static void main (String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入5句话:");
        System.out.println();
        String hua[] = new String [5];//定义数组"hua"
        for (int i = 0; i<hua.length;i++){ //循环将数组存入数组
            System.out.println("请输入第"+(i+1)+"句话:");
            hua[i]=input.next();
        }
        System.out.println();
        System.out.println();
        System.out.println("逆序输出5句话为:");
        for (int j=(hua.length-1);j>=0;j-- ){//循环用逆序将数组中的语句输出
            System.out.println(hua[j]);
        }
    }
}

练习:28

原题:
今有稚兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?

参考源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 * 今有稚兔同笼,上有三十五头,下有九十四足,问鸡兔各几何
 * 解决思路:使用嵌套for循环,将c设为鸡,将r设为兔子
 * 让c和r在循环中,进行相加,当头的数字等于35并且脚的数字等于94时,便输出此时的两个数
 * 并结束循环
 */
public class P142_2{
    public static void main (String[]args){
        boolean zhi = true;//定义zhi为真
        for ( int c = 0 ;c<=35&&zhi; c++  ){//定义for循环条件,并将c设为鸡
            for ( int r = 0 ; r<=35-c; r++ ){//将r设为兔子
                int head = c+r; //头的总数=鸡加兔子
                int footer = c*2+r*4;//脚的总数=鸡*2+兔子*4
             if ( head==35 && footer == 94 ){//当脚的总数等于94并且头的总数等于35时,输出结果,并结束循环
                 zhi = false ;
                 System.out.println("鸡="+c);
                 System.out.println("兔子="+r);
                 break;
             }
            }
        }
        System.out.println("程序结束!");
    }
}

练习:23

原题:

需求说明:

  • 循环输入商品编号和购买数量,系统自动计算每种商品的价钱(单价X购买数量),并累加到总金额。
  • 当用户输入n时,表示想结账,则退出循环开始结账(假设享受八折优惠)。
  • 结账时,根据折扣计算应付金额,输入实付金额,计算找零。

运行结果如下:
************************
请选择购买的商品编号:
1.T恤    2.网球鞋     3.网球拍
************************
请输入商品编号:1
请输入购买数量:2
T恤¥245.0            数量2              合计¥490.0
是否继续(y/n)
y
请输入商品编号:2
请输入购买数量:3
网球鞋$570.0      数量3                合计¥1710.0
是否继续(y/n)n
折扣:0.8
应付金额:1760.0
实付金额:1800
找钱:40

参考源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.*;
public class P112_3{
    public static void main (String[]args){
        Scanner input = new Scanner (System.in);
        System.out.println("*************************");
        System.out.println("请选择购买的商品编号:");
        System.out.println("1.T恤\t2.网球鞋\t3.网球拍");
        System.out.println("********");
        int amount = 0 ;//购买数量
        int goodsNo = 0;//商品编号
        double num = 0.0 ;//累加商品总额
        String name = "" ;//商品名称
        double price = 0.0 ;//商品价格
        double discount = 0.8 ;//折扣比例
        double total = 0.0 ;//商品总价
        double pay = 0.0 ; //应付金额
        double payment = 0.0;//实付金额
        for ( int i = 1 ; i<1000 ; i++ ){ //使用for循环
            System.out.println("请输入商品编号:");//键盘录入商品编号
            goodsNo = input.nextInt();
            System.out.println("请输入购买数量:");//键盘录入购买数量
            amount = input.nextInt();
            switch ( goodsNo ){ //使用switch结构来编排商品列表
            case 1 :
                name = "T恤";
                price = 245.0;
                break;
            case 2 :
                name = "网球鞋";
                price = 570.0;
                break;
            case 3 :
                name = "网球拍";
                price = 320.0;
                break;
            }
            total = price * amount ;//总额等于数量乘以单价
            num = num + total; //累加
            System.out.println(name+"¥"+price+"\t"+"数量:"+amount+"\t合计:"+total);
            System.out.println("是否继续?(y/n)");
            String yes = input.next();//键盘录入是否继续
            if ( "n".equals(yes) ){ //若输入为n,则结束循环.
                break;
            }
           
        }
        pay = num * discount; // 应付金额等于总额乘以折扣
        System.out.println("折扣:"+discount);
        System.out.println("应付金额:"+pay);
        System.out.println("请输入实付金额:");
        payment = input.nextDouble();
        double zhaoqian = payment-pay;//找钱等于实付金额减去应付金额
        System.out.println("找钱:"+zhaoqian);
    }
}

练习:20

原题为:用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。验证最多三次,超过三次则程序结束。根据验证结果的不同(信息匹配/信息不匹配/三次都不匹配),执行不同的操作,假设正确的用户名和密码分别为:Jim和123456.

下面是分别用while,do-while,for循环写出来的源代码(可能因循环结构不同,因此i的数值出现了偏差):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.*;
public class P137_3{
public static void main (String[]args){
Scanner input = new Scanner(System.in);
String id ;//录入ID
int press;//录入密码
for ( int i = 2; i&gt;=0; i-- ){//定义表达式
System.out.println("请输入用户名(for循环):");
id = input.next();//录入用户名
System.out.println("请输入密码:");
press = input.nextInt();//录入密码
if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环
System.out.println("欢迎登录Shopping系统!");
break;
}
else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数
System.out.println("输入错误!您还有"+i+"次输入机会!");
if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环
System.out.println("******************");
System.out.println("对不起,您3次均输入错误!");
}
continue;
}
}
System.out.println("***********while循环开始*******");
int i = 3;
while ( i&gt;0 ){
System.out.println("请输入用户名(while循环):");
id = input.next();//录入用户名
System.out.println("请输入密码:");
press = input.nextInt();//录入密码
if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环
System.out.println("欢迎登录Shopping系统!");
break;
}
else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数
i = i-1;
System.out.println("输入错误!您还有"+i+"次输入机会!");
if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环
System.out.println("******************");
System.out.println("对不起,您3次均输入错误!");
}
continue;
}
i--;
}
System.out.println("***********do-while循环开始*******");
do{System.out.println("请输入用户名(do-while循环):");
id = input.next();//录入用户名
System.out.println("请输入密码:");
press = input.nextInt();//录入密码
if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环
System.out.println("欢迎登录Shopping系统!");
break;
}
else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数
i = i-1;
System.out.println("输入错误!您还有"+i+"次输入机会!");
if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环
System.out.println("******************");
System.out.println("对不起,您3次均输入错误!");
}
continue;
}
} while ( i &lt;= 3 &amp;&amp; i&gt;0 );
}
}

练习:19

原题目:
从键盘输入一个整数,当输入1~7时,显示下面对应的英文星期名称和缩写.
1:MON 2:TUE 3:WED 4:THU 5:FRI 6:SAT 7:SUN
输入其他数字时提示用户重新输入,输入数字0时程序结束.

分别用了while,do-while,for循环结构来做这道题,源代码如下(在使用for循环的时候,假设for循环的条件也是0,那么循环将不会被执行,因此若需要停止for循环,输入10即可):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import java.util.*;
public class P120_5{
    public static void main (String[]args){
        Scanner input = new Scanner (System.in);
        int num = 1 ;//定义用户输入的数字
        int day = 0 ;//定义天数
        while ( num!=0 ){ //定义当用户输入0时,结束循环
            System.out.println("请输入数字1~7(输入0结束)(while循环):");
            num = input.nextInt();//录入用户输入的数字
            day = num ; //将num的值赋给day
            if ( num =1 ){ //当用户输入的数字正确时,提示文字,否则提示错误,执行下一次循环
                switch (day){
                case 1 :
                    System.out.println("今天是:MON");
                    break;
                case 2 :
                    System.out.println("今天是:TUE");
                    break;
                case 3 :
                    System.out.println("今天是:WED");
                    break;
                case 4 :
                    System.out.println("今天是:THU");
                    break;
                case 5 :
                    System.out.println("今天是:FRI");
                    break;
                case 6 :
                    System.out.println("今天是:SAT");
                    break;
                case 7 :
                    System.out.println("今天是:SUN");
                    break;
            }
                }
                else if ( num !=0 ) {//当值为0时,不再执行错误的提示
                System.out.println("*************************");
                System.out.println("数字输入错误,请重新输入!");
                System.out.println("*************************");
                continue; //跳转标签,当条件不符合本次循环时,跳出本次循环,执行下一次循环
                }
            }
        System.out.println("while循环结束!下面是do-while循环结构所写的代码");
        System.out.println("***********do-while循环开始**************");
        do {
            System.out.println("请输入数字1~7(输入0结束)(do-while循环):");
            num = input.nextInt();//录入用户输入的数字
            day = num ; //将num的值赋给day
            if ( num =1 ){ //当用户输入的数字正确时,提示文字,否则提示错误,执行下一次循环
                switch (day){
                case 1 :
                    System.out.println("今天是:MON");
                    break;
                case 2 :
                    System.out.println("今天是:TUE");
                    break;
                case 3 :
                    System.out.println("今天是:WED");
                    break;
                case 4 :
                    System.out.println("今天是:THU");
                    break;
                case 5 :
                    System.out.println("今天是:FRI");
                    break;
                case 6 :
                    System.out.println("今天是:SAT");
                    break;
                case 7 :
                    System.out.println("今天是:SUN");
                    break;
            }
                }
                else if ( num !=0 ) {//当值为0时,不再执行错误的提示
                System.out.println("*************************");
                System.out.println("数字输入错误,请重新输入!");
                System.out.println("*************************");
                continue; //跳转标签,当条件不符合本次循环时,跳出本次循环,执行下一次循环
                }
            } while ( num!=0 );
        System.out.println("*************************");
        System.out.println("do-while循环结束!下面是for循环结构所写的代码:");
        System.out.println("*************************");
        for ( ; num!=10; ){
            System.out.println("请输入数字1~7(输入10结束)(for循环):");
            num = input.nextInt();//录入用户输入的数字
            day = num ; //将num的值赋给day
            if ( num =1 ){ //当用户输入的数字正确时,提示文字,否则提示错误,执行下一次循环
                switch (day){
                case 1 :
                    System.out.println("今天是:MON");
                    break;
                case 2 :
                    System.out.println("今天是:TUE");
                    break;
                case 3 :
                    System.out.println("今天是:WED");
                    break;
                case 4 :
                    System.out.println("今天是:THU");
                    break;
                case 5 :
                    System.out.println("今天是:FRI");
                    break;
                case 6 :
                    System.out.println("今天是:SAT");
                    break;
                case 7 :
                    System.out.println("今天是:SUN");
                    break;
            }
                }
                else if ( num !=10 ) {//当值为0时,不再执行错误的提示
                System.out.println("*************************");
                System.out.println("数字输入错误,请重新输入!");
                System.out.println("*************************");
                continue; //跳转标签,当条件不符合本次循环时,跳出本次循环,执行下一次循环
                }
        }
        System.out.println("for循环结束!");
        System.out.println("*******************");
        System.out.println("程序结束!");
        }
    }