练习:24

原题:

  • 进入系统主菜单后,提示用户输入数字,然后根据选择进入相应的功能模块。
  • 如果用户输入错误,可以重复输入,直到输入正确,执行相应的操作后退出循环。

运行结果如下:

欢迎使用MyShopping管理系统

***********

1.客户信息管理

2.购物结算

3.真情回馈

4.注销

*****************

请选择,输入数字:5

输入错误,请重新输入数字:2

购物结算

程序结束

参考源代码如下:

import java.util.*;
public class P115_4{
public static void main (String[]args){
Scanner input = new Scanner(System.in);
System.out.println("欢迎使用MYShopping管理系统");
System.out.println("\n\n********************************");
System.out.println("1.客户信息管理");
System.out.println("2.购物结算");
System.out.println("3.真情回馈");
System.out.println("4.注销");
boolean resulst = false;
int isRight=0;
do {
resulst = false;
System.out.println("请选择,输入数字:");
isRight = input.nextInt();
switch (isRight){
case 1 :
System.out.println("1.客户信息管理");
break;
case 2 :
System.out.println("2.购物结算");
break;
case 3 :
System.out.println("3.真情回馈");
break;
case 4 :
System.out.println("4.注销");
break;
default:
System.out.println("输入错误!");
resulst = true;
break;
}

}while (resulst==true);
}
}

练习:20

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

下面是分别用while,do-while,for循环写出来的源代码(可能因循环结构不同,因此i的数值出现了偏差):
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>=0; i-- ){//定义表达式
System.out.println("请输入用户名(for循环):");
id = input.next();//录入用户名
System.out.println("请输入密码:");
press = input.nextInt();//录入密码
if ("Jim".equals(id) && 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>0 ){
System.out.println("请输入用户名(while循环):");
id = input.next();//录入用户名
System.out.println("请输入密码:");
press = input.nextInt();//录入密码
if ("Jim".equals(id) && 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) && 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 <= 3 && i>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即可):

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("程序结束!");
}
}

练习:18

此文由《练习16》演变而来,只不过最大的差别在于:此练习使用了switch选择结构,while循环结构,do-while循环结构.

原题为:
刘珊珊参加了ACCP的学习,她父母承诺:
如果考试成绩==100分,父亲给她买辆车;
如果考试成绩>=90分,母亲给她买台笔记本电脑;
如果考试成绩>=60分,母亲给她买部手机;
如果考试成绩<60分,没有礼物。

参考源代码如下:

/*
* 综合了switch结构,随机数产生(double类型),while循环结构
* 循环写错了走入了死循环,是因为变量名写错了.
*/
import java.util.Scanner;
public class P96_4{
public static void main (String[]args){
Scanner input = new Scanner (System.in);
System.out.println("请输入考试成绩:");
int liuScore = input.nextInt();
if ( liuScore <= 100 && liuScore >= 0 ){
switch (liuScore/10) { //switch来对成绩进行分解
case 10 :
System.out.println("恭喜获得一辆车");
break;
case 9 :
System.out.println("恭喜获得笔记本一台");
break;
case 8 :
System.out.println("获得手机一台");
break;
case 7 :
System.out.println("获得手机一台");
break;
case 6 :
System.out.println("获得手机一台");
break;
case 5 :
System.out.println("没有奖励");
break;
case 4 :
System.out.println("没有奖励");
break;
case 3 :
System.out.println("没有奖励");
break;
case 2 :
System.out.println("没有奖励");
break;
case 1 :
System.out.println("没有奖励");
break;
}
} else {

}
System.out.println("******************************");
System.out.println("请输入幸运数字(10以内):");
int num = input.nextInt(); //键盘录入
int random = (int)( Math.random()*10 ); //随机输出数字
if ( num == random ){
System.out.println("恭喜,你获得了神秘大礼!");
} else {
System.out.println("抱歉,你没有获奖");
}
System.out.println("******************************");
System.out.println("请输入一个数字(100以内正整数)(以所输入的数字开始循环,到100为止):");
int num1 = input.nextInt() ; //从键盘录入数字
while ( num1 <= 100 ) { //定义循环的最多次数 System.out.println("这是我的第一个循环结构的"+num1+"遍循环");//输出循环 num1++;//刚还是写了两次死循环,是因为这里的变量写错了.. } System.out.println("********************");//do-while循环结构开始 System.out.println("请输入一个数字(正整数),以检测循环:");//提示输入 int num2 = input.nextInt() ; do { //do结构开始 System.out.println("do循环结构开始了,第"+num2+"遍do循环"); num2++; } while ( num2 <= 15 ); //判断条件是否正确 System.out.println("**************************"); System.out.println("程序运行结束!"); } }