添加参考答案

This commit is contained in:
OrangeCat 2021-07-28 13:23:33 +08:00 committed by GitHub
parent 59bc12c3f7
commit fef9210a61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1004 additions and 6 deletions

View File

@ -26,5 +26,31 @@ public class BMIexponent {
}
```
#### 练习1试着实现将37摄氏度转换为整型的华氏度。提示 华氏度 =32+摄氏度 ×1.8
#### 练习2一个圆柱形粮仓底面值径为 10米高为 3米该粮仓体积为多少立方米?如果每立方米屯粮 750 千克,该粮仓一共可储存多少千克粮食?
```java
public class CelsiusToFahrenheit {
public static void main(String[] args) {
int celsius = 37;
System.out.println("要转换的摄氏度 = " + celsius);
double fahrenheit = 9.0/5 * celsius + 32;
int intfahrenheit = (int)fahrenheit;
System.out.println("37摄氏度 = " + fahrenheit + "华氏度(未转换成int型)");
System.out.println("37摄氏度 = " + intfahrenheit + "华氏度(转换成int型)");
}
}
```
#### 练习2一个圆柱形粮仓底面值径为 10米高为 3米该粮仓体积为多少立方米?如果每立方米屯粮 750 千克,该粮仓一共可储存多少千克粮食?
```java
public class Granary {
public static void main(String[] args) {
final double PI = 3.14;
int diameter = 10;
int height = 3;
double volume = diameter/2 * diameter/2 * PI * height;
System.out.println("该粮仓的体积 = " + volume + "立方米");
int weight = 750;
System.out.println("该粮仓一共可储存" + weight * volume + "千克粮食");
}
}
```

View File

@ -37,9 +37,77 @@ public class Tomato { // 创建西红柿类
#### 练习1
在控制台上简述一个整型数组如int a[] ={1234 }; 数组遍历的过程,并体现出当i的值为多少时会产生异常异常的种类是什么?
```java
public class Array {// 创建一个Array类
public static void main(String args[]) {
int a[] = { 1, 2, 3, 4 };// 定义一个int类型的数组
for (int i = 0; i < 5; i++) {// 遍历数组
try {// try块
System.out.print("当 i = " + i + "" + i + " < 5 a[" + i + "] = " + a[i] + "");// 控制台输出
} catch (ArrayIndexOutOfBoundsException e) {// catch块
System.out.println("当 i = " + i + "" + i + " < 5 a[" + i + "]不存在会引起"
+ e.toString().substring(10, e.toString().indexOf(':'))
+ "异常,\n该异常为数组越界异常主要是由于索引超出了数组的长度范围引起的");// 控制台输出
}
if (i != 4) {// 当i不等于4的时候
System.out.println("执行i++" + "i = " + (i + 1) + "。");// 控制台输出
}
}
}
}
```
#### 练习2
模拟一个简单的整数计算器只能计算两个整数之间的加、减、乘、除的运算并用try-catch捕捉InputMismatchException控制台输入的不是整数异常。
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class Calculator {// 创建一个Number类
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 控制台输入
try {// try块
System.out.println("请输入第一个整数:"); // 提示信息
int num1 = sc.nextInt(); // 声明一个int类型的变量num1接收控制台输入的信息
System.out.println("请输入运算符号(+、-、*、/)"); // 提示信息
String symbol = sc.next(); // 声明一个String类型的变量symbol接收控制台输入的信息
System.out.println("请输入第二个整数:"); // 提示信息
int num2 = sc.nextInt(); // 声明一个int类型的变量num1接收控制台输入的信息
int result = 0; // 定义并初始化“运算结果”
switch (symbol) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 != 0) {
result = num1 / num2;
} else {
System.out.println("除数怎么可能是“0”呢");
return;
}
break;
}
System.out.println("运算结果:" + result); // 输出运算结果
} catch (InputMismatchException ime) {// catch块
System.out.println("对不起!您输入的不是整数,已经引起了" + ime.toString() + "异常;\n" + "即:用户输入的信息与规定的参数类型不符时出现的异常"); // 输出异常的信息
}
sc.close();
}
}
```
## 实例2 捕捉控制台输入西红柿单价后的异常
西红柿的单价不是一成不变的修改上面的实例首先实现控制台输入单价的功能然后在finally代码块中关闭控制台输入对象。
@ -86,9 +154,69 @@ public class Tomato { // 创建西红柿类
#### 练习3
银行账号中现有余额 1023.79 元。模拟取款,当在控制台上输入的取款金额不是整数时,会引起数字格式转换异常。
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class Account { // 创建一个Account类
public static void main(String[] args) {
double leftMoney = 1023.79; // 初始化“账户余额”
Scanner sc = new Scanner(System.in);
System.out.println("请输入取款金额:");
try { // try块
int drawMoney = sc.nextInt();
double result = leftMoney - drawMoney; // 建立变量间的关系
if(result >= 0) { // 当余额大于取款金额时
System.out.println("您账号上的余额:" + (float)result + "元");
} else { // 当取款金额超出余额时
System.out.println("您账号上的余额不足!");
}
}
catch (InputMismatchException e) { // catch块
System.out.println("发生数字格式转换异常:输入的“取款金额”不是整数!");
} finally {
sc.close(); // 关闭控制台输入
}
}
}
```
#### 练习4
新买了一台电脑,这台电脑与其他的电脑不一样,无法正常启动开机(电脑品牌未声明)。使用继承来体现这个事件,并尝试利用"电脑品牌"引出空指针异常。
```java
class Computer { // 创建一个Computer类
public void powerUp() { // 创建一个普通的方法powerUp()
System.out.println("电脑正常开机启动"); // 控制台输出
}
}
class NewComputer extends Computer { // 创建一个NewComputer类继承Computer类
private String brand; // 定义“电脑品牌”
@Override
public void powerUp() {// 重写父类Computer中的powerUp()方法
System.out.println("刚买回来的新电脑不能正常开机启动\n新电脑的品牌是" + brand); // 控制台输出
}
}
public class PowerOn {// 创建一个Test类
public static void main(String[] args) {
System.out.println("模拟场景:用户新买了台电脑,这台电脑与其他的电脑不一样,无法正常启动开机 \n 经检测,是由于电脑的品牌不确定造成的……\n");
try { // try块
NewComputer newComputer = new NewComputer(); // 创建对象newComputer
newComputer.powerUp(); // 对象newComputer调用powerUp()方法
} catch (NullPointerException npe) { // catch块
System.out.println("引起空指针异常:" + npe.toString().substring(npe.toString().lastIndexOf('.') + 1)); // 控制台输出
} finally { // finally块
System.out.println("异常出现的原因:\n新机器newComputer对象中的品牌brand为null"); // 控制台输出
}
}
}
```
## 实例3 规定西红柿单价不得超过7元
@ -187,9 +315,109 @@ public class Tomato {// 创建西红柿类
#### 练习5
模拟老师上课前的点名过程,并将旷课的学生作为异常抛出∶张三、李四、王五(老师在点名册上记下了“王五旷课”)。
```java
class Person { // 创建一个Person类
private String job; // 定义“职称”
public String getJob() { // 获得“职称”
return job;
}
public void setJob(String job) { // 设置“职称”
this.job = job;
}
public void say(String words) { // 创建有参的方法say()
System.out.println(job + "" + words); // 输出结果
}
}
public class CallTheRoll { // 创建一个CallTheRoll类
public static void main(String[] args) {
try { // try块
Person person1 = new Person(); // 创建对象person1
person1.setJob("老师"); // 设置对象person1的“职称”
person1.say("同学们早上好!现在我们开始点名..."); // 设置对象person1说话的内容
Person person2 = new Person(); // 创建对象person2
person2.setJob("班长"); // 设置对象person2的“职称”
person2.say("大家保持安静!准备上课..."); // 设置对象person2说话的内容
person1.say("张三!"); // 设置对象person1说话的内容
Person person3 = new Person(); // 创建对象person3
person3.setJob("同学张三"); // 设置对象person3的“职称”
person3.say("到!"); // 设置对象person3说话的内容
person1.say("李四!"); // 设置对象person1说话的内容
Person person4 = new Person(); // 创建对象person4
person4.setJob("同学李四"); // 设置对象person4的“职称”
person4.say("Here"); // 设置对象person4说话的内容
person1.say("下次说中文。下一个!\n   王五"); // 设置对象person1说话的内容
Person person5 = new Person(); // 创建对象person5
person5.setJob("同学王五"); // 设置对象person5的“职称”
person5.say("...."); // 设置对象person5说话的内容
person1.say("王五!"); // 设置对象person1说话的内容
person5.say("...."); // 设置对象person5说话的内容
throw new Exception("抛出异常:老师在点名册上记下了“王五旷课”!!!"); // 抛出异常
} catch (Exception e) { // catch块
System.out.println(e.getMessage()); // 输出异常的信息
} finally {
System.out.println("老师:今天点名到此结束。现在开始上课!"); // 控制台输出
}
}
}
```
#### 练习6
超市经常会对定价较市场价低的产品实施限购∶ 超市里的鲜鸡蛋每500 克 3.98 元每人限购1500克。现将超过1500克的作为异常抛出而对于满足条件的计算出应付款。
```java
import java.util.Scanner;
class OverloadException extends Exception {// 自定义一个异常类OverloadException继承Exception类
public OverloadException(double weight) {// 构造有参的方法
// 出现异常时控制台输出的信息
System.out.println("异常提示:这份鲜鸡蛋的重量为" + weight + "斤超过3斤了超重了");
}
}
public class BuyEggs {// 创建一个BuyEggs类
public static void pay(double weight) throws OverloadException {// 创建一个静态的、有参的pay(double
if (weight > 3.0) {// 如果鸡蛋的重量超过三斤
throw new OverloadException(weight); // 抛出异常
}
float money = (float) (weight * 3.98); // 如果鸡蛋的重量没有超过三斤,计算“应付款”
System.out.println("应付款:" + money + "元"); // 输出“应付款”
}
public static void main(String[] args) {
System.out.print("请输入鲜鸡蛋的重量(斤)");
Scanner sc = new Scanner(System.in); // 控制台输入
double weight = sc.nextDouble(); // 声明一个double类型的变量weight接收控制台输入的值
try {// try块
pay(weight); // 调用pay()方法并传递参数weight
} catch (OverloadException ole) {// catch块
/*
* 注意: 这个方法体之所以为“空”是因为在自定义异常的类OverloadException中 我们通过构造的有参方法public
* OverloadException(double weight),已将出现异常时的信息在控制台上输出了;
* 所以此处就不必再写“System.out.println(ole);”这条控制台输出语句。
*/
} finally {// finally块
sc.close(); // 关闭控制台输入
}
}
}
```
##### 知识补充:

View File

@ -23,7 +23,54 @@ public class Restaurant {
```
#### 练习1将一、二年级学生的学生成绩划分等级等级划分标准如下①"优秀",大于等于 90分;②"良好",大于等于 80 分,小于 90分;③"合格",大于等于 60分小于80分;④"不合格",小于 60 分。使用 if…else if语句实现根据控制台输入的成绩输出与该成绩对应等级的功能。
```java
import java.util.Scanner;
public class ScoreLevel {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入您的分数:");
double score = sc.nextDouble();
if (score >= 90) {
System.out.println("您的分数" + score + "对应的等级为“优秀”");
} else if (score >= 80) {
System.out.println("您的分数" + score + "对应的等级为“良好”");
} else if (score >= 60) {
System.out.println("您的分数" + score + "对应的等级为“合格”");
} else if (score < 60) {
System.out.println("您的分数" + score + "对应的等级为“不合格”");
}
sc.close();
}
}
```
#### 练习2BMI 身体质量指数的等级划分标准如下∶①"偏轻"BMI 小于18.5;②"正常"BMI大于等于 18.5小于25;③"偏重"BMI 大于等于25小于30;④"肥胖"BMI大于等于30。根据控制台输入的身高 单位∶ 来)、体重(单位∶ 千克),输出 BMI指数以及与该指数对应的等级。
```java
import java.util.Scanner;
public class BMIexponent {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入您的身高(单位:米):");
double height = sc.nextDouble();
System.out.print("请输入您的体重(单位:公斤):");
double weight = sc.nextDouble();
double exponent = weight/(height * height);
if (exponent < 18.5) {
System.out.println("您的身体质量指数BMI为" + exponent + ",偏轻。");
} else if (exponent < 25) {
System.out.println("您的身体质量指数BMI为" + exponent + ",正常。");
} else if (exponent < 30) {
System.out.println("您的身体质量指数BMI为" + exponent + ",偏重。");
} else if (exponent >= 30) {
System.out.println("您的身体质量指数BMI为" + exponent + ",肥胖。");
}
sc.close();
}
}
```
## 实例2 用 switch 多分支语句判断成绩等级
创建 Grade类使用 Scanner 类在控制台输入成绩,然后用 switch 多分支语句判断输入的分数属于哪个等级。10分和9分属于优8分属于良7分和6分属于中5分、4分、3分、2分、1分以及 0 分均为差,实例代码如下∶
@ -66,7 +113,77 @@ public class Grade {
```
#### 练习3使用 switch多分支语句判断控制台输入的某个月份属于哪个季节。
```java
import java.util.Scanner;
public class Seasons {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入某个月份1~12");
int month = sc.nextInt();
if (month < 1 || month > 12) {
System.out.println("警告:您在非法操作……");
} else {
switch (month) {
case 3:
case 4:
case 5:
System.out.println(month + "月正值春季");
break;
case 6:
case 7:
case 8:
System.out.println(month + "月正值夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month + "月正值秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month + "月正值冬季");
break;
}
}
sc.close();
}
}
```
#### 练习4使用 switch多分支语句判断控制台输入的某个月份属于哪个季节。光盘\Code\Try\O3\052某大型商超为答谢新老顾客当累计消费金额达到一定数额时顾客可享受不同的折扣①尚未超过 200 元,顾客须按照小票价格支付全款;不少于 200元但尚未超过 600元顾客全部的消费金额可享 8.5 折优惠;③不少于 600 元但尚未超过 1000 元,顾客全部的消费金额可享 7折优惠;④不少于 1000 元,顾客全部的消费金额可享 6折优惠;
根据顾客购物小票上的消费金额,在控制台上输出该顾客将享受的折扣与打折后需支付的金额。
```java
import java.util.Scanner;
public class Discount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入您的消费金额:");
int money = sc.nextInt();
switch (money / 200) {
case 0:
System.out.println("您已消费:" + money + "元尚未超过200元须按照小票价格支付全款即" + money + "元RMB");
break;
case 1:
case 2:
System.out.println("您已消费:" + money + "元不少于200元但尚未超过600元全部的消费金额可享8.5折优惠,即" + (money * 0.85) + "元RMB");
break;
case 3:
case 4:
System.out.println("您已消费:" + money + "元不少于600元但尚未超过1000元全部的消费金额可享7折优惠即" + (money * 0.7) + "元RMB");
break;
default:
System.out.println("您已消费:" + money + "元不少于1000元全部的消费金额可享6折优惠即" + (money * 0.6) + "元RMB");
break;
}
sc.close();
}
}
```
## 实例3使用 for 循环完成 1 100的相加运算
@ -86,7 +203,54 @@ public class AdditiveFor {
$思考可不可以改写用while实现相加运算呢$
#### 练习5有一组数 1、1、2、3、5、8、13、21、34…请用for循环算出这组数的第n个数是多少?
```java
import java.util.Scanner;
public class Arithmetic {
public static void main(String[] args) {
int num1 = 1, num2 = 1, temp;//定义3个变量num1用来记录
Scanner sc = new Scanner(System.in);// 创建扫描器对象,用于输入
System.out.print("请输入要查看第n个数中的n值");
int num = sc.nextInt();// 记录用户输入的数字
for (int i = 2; i < num; i++) {
num1 += num2;//后一个数字是前两个数字之和
//交换num1和num2的值
temp = num1;
num1 = num2;
num2 = temp;
}
System.out.println("第" + num + "个数为" + num2);//输出指定位数上的数据
sc.close();
}
}
```
#### 练习6一个球从80米高度自由落下每次落地后反弹的高度为原高度的一半第6次落地时共经过多少米?第6次反弹多高
```java
public class Fall {// 创建一个Fall类
public static void main(String[] args) {
double high = 80;// 声明double类型变量high
double sum = 0;// 声明double类型变量sum
// i = 0代表小球第一次落地时i = 10代表第六次落地时
for (int i = 0; i < 11; i++) {
// 小球开始下落到第六次落地时经过的总路程
sum += high;
// 判断小球是否完成了一次完整地落地、反弹过程
if (i % 2 == 0) {
// 每次落地之后反弹高度为原来的一半
high = high / 2;
}
}
// 控制台输出小球第六次落地时经过的总路程
System.out.println("第六次落地时共经过" + sum + "米");
// 控制台输出小球第六次落地后反弹的高度
System.out.println("第六次落地后反弹:" + high + "米");
}
}
```
## 实例4使用嵌套的 for 循环输出乘法口诀表
@ -108,8 +272,56 @@ public class Multiplication {
#### 练习75文钱可以买一只公鸡3 文钱可以买一只母鸡1文钱可以买三只雏鸡现在用 100文钱买 100 只鸡,那么公鸡、母鸡、雏鸡各有多少只?
#### 练习8根据用户控制输入 * 的行数,在控制台中输出相应行数的等腰三角形。
```java
public class BuyChicken {// 百钱买百鸡
public static void main(String[] args) {
int cock, hen, chick;// 公鸡、母鸡、小鸡
for (cock = 0; cock <= 20; cock++) {// 最多买20只公鸡
for (hen = 0; hen <= 33; hen++) {// 最多买33只母鸡
for (chick = 3; chick <= 99; chick += 3) {// 最多买99只小鸡有“百鸡”的限制
if (5 * cock + 3 * hen + chick / 3 == 100)// 百钱
{
if (cock + hen + chick == 100)// 百鸡
{
System.out.println("公鸡:" + cock + "\t母鸡" + hen + "\t小鸡" + chick);
}
}
}
}
}
}
}
```
#### 练习8根据用户控制输入 * 的行数,在控制台中输出相应行数的等腰三角形。
```java
import java.util.Scanner;
public class OutputTriangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("等腰三角形由多行“*”号组成,请输入“*”的行数:");
int line = sc.nextInt();
if (line <= 1) {
System.out.println("须输入大于1的自然数");
} else {
for (int i = 1; i <= line; i++) {// 控制“*”的行数
for (int j = 1; j <= line - i; j++) {// 每行添加空格的个数
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {// 在空格后添加“*
System.out.print("*");
}
System.out.println();
}
}
sc.close();
}
}
```
## 实例5找出1 19 之间所有的偶数
使用一个for循环输出119之间所有的值如果输出的值是奇数则使用 continue 语句跳过本次循环,实例代码如下∶
@ -126,4 +338,3 @@ public class ContinueTest {
}
```
#### 练习找出1-1000数字种的素数和水花仙数。

View File

@ -34,6 +34,65 @@ public class ExplicitConversion {
}
```
#### 练习1使用 char型声明'a''g',然后输出它们相加后的结果。
```java
public class PlusChar {
public static void main(String[] args) {
char a = 'a';
char b = 'b';
char c = 'c';
char d = 'd';
char e = 'e';
char f = 'f';
char g = 'g';
System.out.println("a~g相加后的结果" + (a + b + c + d + e + f + g));
}
}
```
#### 练习2IP地址每段数字的最大值可以由byte型的最大值与 short型128相加后得到使用隐式转换控制台输出 IP 地址每段数字的最大值。
```java
public class MaxIP {
public static void main(String[] args) {
byte maxvalue = 127;
short s = 128;
System.out.println("IP中的每段数字的最大值 = " + (maxvalue + s));
}
}
```
#### 练习3将 6571显式转换为 char 型并输出。
#### 练习4一辆货车运输箱子载货区宽2米长 4米一个箱子宽 1.5 米,长 1.5米,请问载货区一层可以放多少个箱子?
```java
public class IntToChar {
public static void main(String[] args) {
int i_a = 65;
int i_b = 66;
int i_c = 67;
int i_d = 68;
int i_e = 69;
int i_f = 70;
int i_g = 71;
System.out.println("65转换为char型的结果为" + (char)i_a);
System.out.println("66转换为char型的结果为" + (char)i_b);
System.out.println("67转换为char型的结果为" + (char)i_c);
System.out.println("68转换为char型的结果为" + (char)i_d);
System.out.println("69转换为char型的结果为" + (char)i_e);
System.out.println("70转换为char型的结果为" + (char)i_f);
System.out.println("71转换为char型的结果为" + (char)i_g);
}
}
```
#### 练习4一辆货车运输箱子载货区宽2米长 4米一个箱子宽 1.5 米,长 1.5米,请问载货区一层可以放多少个箱子?
```java
public class GoodsVan {
public static void main(String[] args) {
int vanWidth = 2;
int vanLength = 4;
double boxWidth = 1.5;
double boxLength = 1.5;
int boxNumber = (int)(vanWidth/boxWidth) * (int)(vanLength/boxLength);
System.out.println("载货区一层可以放" + boxNumber + "箱子!");
}
}
```

View File

@ -1,4 +1,132 @@
#### 练习1遍历二维数组int a[][] = {{23.654368}{45998680}{76813445}{88644825}}后,再通过循环计算该二维数组的两条对角线之和。
```java
public class GetSum {// 创建GetSum类
public static void main(String args[]) {
// 初始化int类型的二维数组
int a[][] = {{ 23, 65, 43, 68 },
{ 45, 99, 86, 80 },
{ 76, 81, 34, 45 },
{ 88, 64, 48, 25 }};
System.out.println("原始数组如下:");// 控制台输出提示信息
for (int i = 0; i < a.length; i++) {// 遍历二维数组
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
int sum1 = 0;// 声明int类型的变量sum1(求一条对角线的和)
int sum2 = 0;// 声明int类型的变量sum2(求另一条对角线的和)
// 通过循环,获得元素的下标,并分别求出两条对角线的和
for (int i = 0, j = a[i].length - 1; i < a.length; i++, j--) {
sum1 += a[i][i];
sum2 += a[i][j];
}
// 把两条对角线的和相加求和并输出
System.out.println("对角线总和为:" + (sum1 + sum2));
}
}
```
#### 练习2一个3×3的网格将从1到9的数字放入方格达到能够使得每行每列以及每个对角线的值相加都相同。
```java
public class NineGrids {// 创建NineGrids类
public static void main(String[] args) {
// 声明int类型的数组并分配内存三阶方阵
int arr[][] = new int[3][3];
// 确定数字“1”的位置
int a = 2;// 第3行的下标
int b = 3 / 2;// 第2列的下标
for (int i = 1; i <= 9; i++) {// 给数组赋值
arr[a++][b++] = i;// 避免数组下标越界
if (i % 3 == 0) {// 如果i是3的倍数
a = a - 2;
b = b - 1;
} else {// 如果i不是3的倍数
a = a % 3;
b = b % 3;
}
}
System.out.println("九宫格:");
// 遍历数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[i][j] + " ");// 输出数组中的数据
}
System.out.println();// 换行
}
}
}
```
#### 练习3交换二维数组 int array[][] = {{87523}{21534}{152320 }};的行、列数据。
#### 练习4使用二维数组实现杨辉三角算法。
```java
public class SwapRC {// 交换二维数组的行列数据
public static void main(String[] args) {
int i, j;// 定义两个变量,分别用来作为行和列的循环变量
// 初始化一个静态的int型二维数组
int[][] array = { { 8, 75, 23 }, { 21, 55, 34 }, { 15, 23, 20 } };
System.out.println("—————原始数组—————");// 提示信息
// 遍历原始的二维数组
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
System.out.print(array[i][j] + "\t");// 输出原始数组中的元素
}
System.out.println();// 换行
}
int temp;// 临时变量
// 通过循环调换元素的位置
for (i = 0; i < 3; i++) {
for (j = 0; j < i; j++) {
temp = array[i][j];// 把数组元素赋给临时变量
// 交换行列数据
array[i][j] = array[j][i];
array[j][i] = temp;
}
}
System.out.println("——调换位置之后的数组——");// 提示信息
// 遍历调换位置之后的二维数组
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
System.out.print(array[i][j] + "\t");// 输出调换位置后的数组元素
}
System.out.println();// 换行
}
}
}
```
#### 练习4使用二维数组实现杨辉三角算法。
```java
public class YangHui {// 杨辉三角算法的实现
public static void main(String[] args) {
// 定义一个长度为10的二维数组
int[][] Array_int = new int[10][];
// 向数组中记录杨辉三角形的值
for (int i = 0; i < Array_int.length; i++) {// 遍历行数
Array_int[i] = new int[i + 1];// 定义二维数组的列数
// 遍历二维数组的列数
for (int j = 0; j < Array_int[i].length; j++) {
if (i <= 1) {// 如果是数组的前两行
Array_int[i][j] = 1;// 将其设置为1
continue;
} else {
// 如果是行首或行尾
if (j == 0 | j == Array_int[i].length - 1)
Array_int[i][j] = 1;// 将其设置为1
else// 根据杨辉算法进行计算
Array_int[i][j] = Array_int[i - 1][j - 1] + Array_int[i - 1][j];
}
}
}
for (int i = 0; i < Array_int.length; i++) {// 输出杨辉三角
for (int j = 0; j < Array_int[i].length; j++)
System.out.print(Array_int[i][j] + "\t");
System.out.println();
}
}
}
```

View File

@ -31,14 +31,139 @@ public class EggCake { // 创建鸡蛋灌饼EggCake类
定义了两个构造方法在无参构造方法中可以使用this关键字调用有参的构造方法。但是要注意this()语句之前不可以有其他代码。
#### 练习1设计加油站类和汽车类加油站提供一个给车加油的方法参数为剩余汽油数量。每次执行加油方法汽车的剩余汽油数量都会加 2。
```java
class GasStation {
public int addOil(int oilVolume) {
oilVolume += 2;
return oilVolume;
}
}
public class AutoMobile {
public static void main(String[] args) {
int leftOilVolume = 10;
GasStation gs = new GasStation();
for (int i = 1; i <= 5; i++) {
leftOilVolume = gs.addOil(leftOilVolume);
}
System.out.println("该车现有油量:" + leftOilVolume + "L。");
}
}
```
#### 练习2智能手机的默认语言为英文。但制造手机时可以将默认语言设置为中文。编写手机类 无,参构造方法使用默认语言设计,利用有参构造方法修改手机的默认语言。
```java
public class Cellphone {
public Cellphone() {
System.out.println("智能手机的默认语言为英文");
}
public Cellphone(String defaultLanguage) {
System.out.println("将智能手机的默认语言设置为" + defaultLanguage);
}
public static void main(String[] args) {
Cellphone cellphone1 = new Cellphone();
Cellphone cellphone2 = new Cellphone("中文");
}
}
```
#### 练习3张三去KFC买可乐商家默认不加冰块。但是张三可以要求加 3 个冰块。请利用有参构造方法实现上述功能。
```java
public class IceBlock {
public IceBlock() {
System.out.println("商家默认可乐里没有冰块……");
}
public IceBlock(String name, int number) {
System.out.println(name + "要求向可乐里放入" + number + "个冰块。");
}
public static void main(String[] args) {
IceBlock block = new IceBlock();
IceBlock iceBlock = new IceBlock("张三", 3);
}
}
```
#### 练习4创建教师类类中有姓名、性别和年龄三个属性在构造方法中使用 this 关键字分别为这三个成员属性赋值。
```java
public class Teacher {
String name;
char sex;
int age;
public Teacher(String name, char sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
System.out.println("教师姓名:" + name + "\n教师性别" + sex + "\n教师年龄" + age);
}
public static void main(String[] args) {
Teacher chinese = new Teacher("张三", '男', 38);
Teacher math = new Teacher("李四", '男', 45);
Teacher english = new Teacher("王五", '女', 32);
}
}
```
#### 练习5一只大熊猫长 1.3 米,重 90千克。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只大熊猫的信息。
```java
#### 练习6创建信用卡类有两个成员变量分别是卡号和密码如果用户开户时没有设置初始密码则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。
public class Panda {
private double length = 1.3;
private double weight = 90.0;
public String getMessages() {
return "熊猫体长" + this.length + "米,体重" + this.weight + "KG。";
}
public static void main(String[] args) {
Panda panda = new Panda();
System.out.println(panda.getMessages());
}
}
```
#### 练习6创建信用卡类有两个成员变量分别是卡号和密码如果用户开户时没有设置初始密码则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。
```java
public class Credit {
String cardNum;
String password;
public Credit(String cardNum, String password) {
this.cardNum = cardNum;
this.password = password;
if (password.equals("123456")) {
System.out.println("信用卡" + cardNum + "的默认密码为" + password);
} else {
System.out.println("重置信用卡" + cardNum + "的密码为" + password);
}
}
public Credit(String cardNum) {
this(cardNum, "123456");
}
public static void main(String[] args) {
Credit initialCredit = new Credit("4013735633800642");
Credit resetedCredit = new Credit("4013735633800642", "168779");
}
}
```

View File

@ -26,6 +26,57 @@ public class Pad extends Computer { // 子类:平板电脑
```
#### 练习1创建银行卡类并设计银行卡的两个子类 储蓄卡与信用卡。
```java
public class BankCard {
String cardNum;
public void saveMoney() {
System.out.println("卡号为" + cardNum + "银行卡可以存钱。");
}
}
public class CreditCard extends BankCard{
public void drawMoney() {
System.out.println("卡号为" + cardNum + "银行卡可以取钱。");
}
public void borrowMoney() {
System.out.println("卡号为" + cardNum + "银行卡可以借钱。");
}
}
public class SavingCard extends BankCard{
public void drawMoney() {
System.out.println("卡号为" + cardNum + "银行卡可以取钱。");
}
}
public class Test {
public static void main(String[] args) {
System.out.println("--------------银行卡的特点--------------");
BankCard bankCard = new BankCard();
bankCard.cardNum = "6224 4569 2421 3677";
bankCard.saveMoney();
System.out.println("--------------储蓄卡的特点--------------");
SavingCard savingCard = new SavingCard();
savingCard.cardNum = "6212 2636 0001 2739";
savingCard.saveMoney();
savingCard.drawMoney();
System.out.println("--------------信用卡的特点--------------");
CreditCard creditCard = new CreditCard();
creditCard.cardNum = "4013 7356 3380 0642";
creditCard.saveMoney();
creditCard.drawMoney();
creditCard.borrowMoney();
}
}
```
## 实例2让平板电脑调用台式机的功能
@ -54,8 +105,52 @@ public class Pad3 extends Computer3 { // 子类:平板电脑
#### 练习3
设计火车类和高铁类,高铁类继承火车类,不管火车类的行进速度是多少,高铁的行进速度永远是火车的二倍。
```java
class Train {
public double getSpeed() {
return 145.8;
}
}
public class HighSpeedRail extends Train {
public double getSpeed() {
return super.getSpeed() * 2;
}
public static void main(String[] args) {
Train train = new Train();
System.out.println("火车的速度为" + train.getSpeed() + "公里/小时");
HighSpeedRail highSpeedRail = new HighSpeedRail();
System.out.println("高铁的速度为" + highSpeedRail.getSpeed() + "公里/小时");
}
}
```
#### 练习4
设计人类,有二个自我介绍的方法,输出"我是 XXX";设计博士类,继承人类,博士类自我介绍时输出"我是XXX 博士"。
```java
class Person {
public String introduce() {
return "我是XXX";
}
}
public class Doctor extends Person {
public String introduce() {
return super.introduce() + "博士";
}
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.introduce());
Doctor doctor = new Doctor();
System.out.println(doctor.introduce());
}
}
```
**扩展知识:**
在开始学习使用class关键字定义类时就应用到了继承原理因为在Java中所有的类都直接或间接继承了java.lang.Obiect类。Obiect类是比较特殊的类它是所有类的父类是Java类层中的最高层类。当创建一个类时除非已经指定要从其他类继承否则都是从java.lang.Object类继承而来的所以Java中的每个类都源于java.lang.Object类如 String、Integer等类都是继承于 Object类。除此之外自定义的类也都继承于Object类。由于所有类都是Obiect子类所以在定义类时省略了extends Object语句。
@ -117,8 +212,43 @@ public class OverLoadTest {
#### 练习5
使用方法的重载描述所有的超市都支持现金付款,但大型商超还支持刷卡付款。
```java
public class Market {
public static String pay(String payStyle) {
return "所有的超市都支持" + payStyle;
}
public static String pay(String marketStyle, String payStyle) {
return marketStyle + "还支持" + payStyle;
}
public static void main(String[] args) {
System.out.println(pay("现金付款"));
System.out.println("但" + pay("大型商超", "刷卡付款"));
}
}
```
#### 练习6
使用方法的重载描述所有的汽车都至少有两块脚踏板,但手动挡汽车有三块脚踏板。
```java
public class Car {
public static Integer havePedalNum(int pedalNum) {
return pedalNum;
}
public static String havePedalNum(String name, int pedalNum) {
return name + "有" + pedalNum;
}
public static void main(String[] args) {
System.out.println("所有的汽车至少有" + havePedalNum(2) + "块脚踏板");
System.out.println("但" + havePedalNum("手动挡汽车", 3) + "块脚踏板");
}
}
```

View File

@ -0,0 +1,91 @@
自增、自减运算符是单目运算符,可以放在变量之前,也可以放在变量之后。自增、自减运算符的作用是使变量的值加 1或减1。语法如下
```java
a++; // 先输出a的原值后做+1运算
++a; // 先做+1运算再输出a计算之后的值
a--; // 先输出a的原值后做-1运算
--a; // 先做-1运算再输出a计算之后的值
```
## 实例1对同一个变量做自增、自减运算
创建 AutolncrementDecreasing类对一个整型变量先做自增运算再做自减运算实例代码如下
```java
public class AutoIncrementDecreasing {
public static void main(String[] args) {
int a = 1; // 创建整型变量a,初始值为1
System.out.println("a = " + a); // 输出此时a的值
a++; // a自增1
System.out.println("a++ = " + a); // 输出此时a的值
a++; // a自增1
System.out.println("a++ = " + a); // 输出此时a的值
a++; // a自增1
System.out.println("a++ = " + a); // 输出此时a的值
a--; // a自减1
System.out.println("a-- = " + a); // 输出此时a的值
}
}
```
#### 练习1使用赋值运算符输出银行的年利率 2.95%)以及存款额 15000元后计算并输出3年后的本金和利息的总和。
```java
public class CorpusAndInterest {
public static void main(String[] args) {
double interest = 0.0295;
int corpus = 15000;
double sum = corpus * (1 + interest) * (1 + interest) * (1 + interest);
System.out.println("存款额15000元,3年后的本息和 = " + sum + "元RMB");
}
}
```
#### 练习2规定 1美元=6.8995元人民币后计算10000元人民币可兑换多少美元。
```java
public class RMBToDollar {
public static void main(String[] args) {
double dollarToRMB = 6.8995;
int RMB = 10000;
double dollar = RMB/dollarToRMB;
System.out.println("10000元人民币可兑换" + dollar + "美元");
}
}
```
## 实例2逻辑运算符结合关系运算符进行运算
创建 LogicalAndRelational类首先利用关系运算符计算出布尔结果再用逻辑运算符做二次计算实例代码如下
```java
public class LogicalAndRelational {
public static void main(String[] args) {
int a = 2; // 声明int型变量a
int b = 5; // 声明int型变量b
// 声明boolean型变量用于保存应用逻辑运算符“&&”后的返回值
boolean result = ((a > b) && (a != b));
// 声明boolean型变量用于保存应用逻辑运算符“||”后的返回值
boolean result2 = ((a > b) || (a != b));
System.out.println(result); // 将变量result输出
System.out.println(result2); // 将变量result2输出
}
}
```
#### 练习3有两名男性应聘者 一位25岁一位32 岁。该公司招聘信息中有一个要求,即男性应聘者的年龄在 2330 岁之间,判断这两名应聘者是否满足这个要求。
```java
public class Interview {
public static void main(String[] args) {
int employeeAge_A = 25;
int employeeAge_B = 32;
System.out.println("25岁的应聘者是否满足这个要求" + ((employeeAge_A >= 23) && (employeeAge_A <= 30)));
System.out.println("32岁的应聘者是否满足这个要求" + ((employeeAge_B >= 23) && (employeeAge_B <= 30)));
}
}
```
#### 练习4我们在登录一个网站时可以使用账户名登录也可以使用手机号登录还可以使用电子邮箱地址登录。请判断某用户是否可以登录。已知服务器中有如下记录账户名 张三,手机号∶ 1234567890电子邮箱zhangsan@163.com
```java
public class Login {
public static void main(String[] args) {
System.out.println("某用户是否可以登录此网站:" +
(("张三" == "张三") || ("1234567890" == "1234567890") || ("zhangsan@163.com" == "zhangsan@163.com")));
}
}
```