练习:30

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

参考源代码如下:

/*
* 依次输入五句话,然后将它逆序输出.
*/
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=0;j-- ){//循环用逆序将数组中的语句输出
System.out.println(hua[j]);
}
}
}

练习:28

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

参考源代码如下:

/*
* 今有稚兔同笼,上有三十五头,下有九十四足,问鸡兔各几何
* 解决思路:使用嵌套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

参考源代码:

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的数值出现了偏差):
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("程序结束!");
}
}