【有书共读(第1期)】《明解Java》笔记:第3章
官方小结:
- 所谓表达式,就是“变量”“常量”“通过运算符将变量和常量连接起来的式子”。
- 表达式包含类型和值,它们在程序运行时通过求值获得。
- 给表达式加上分号的语句是表达式语句。只有分号的语句是空语句。
- 用大括号“{}”将任意数量的语句括起来的语句是程序块。原则上,只在程序块中使用的变量在程序块中进行声明。
- 如果仅当某个条件成立时才执行某条语句,可以使用if-then语句来实现。如果要根据条件的真假而执行不同的处理,可以使用if-then-else来实现。两者统称为if语句。
- 如果通过某个单一表达式的值将程序流程进行分支,最好使用switch语句。分支跳转的位置是标签。如果没有与控制表达式的值相等的标签,则跳转到default标签。
- 当switch语句中的break语句被执行时,switch语句的执行将会终止。
- 各运算符的优先级和结合性是不同的。
- 优先级高的运算符比优先级低的运算符先执行。当优先级相同的运算符连续出现时,根据结合性,执行左运算或右运算。
- 关系运算符、相等运算符、逻辑非运算符可以生成布尔型的true(真)或者false(假)。
- 使用逻辑与运算符和逻辑或运算符的运算中会执行短路求值。所谓短路求值,就是当表达式整体的值通过左操作数的值就可以确定时,将不再对右操作数进行求值。
- 当对赋值表达式进行求值时,可以得到赋值后的左操作数的类型和值。
- if或else等词都具有特殊的含义,称为关键字。
- 赋给变量和方法等的名称称为标识符。
- 所谓算法,就是“解决问题的方案,是一系列定义明确、有序并且数量有限的规则集合”。
3-1
/**
*
*/
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:作业3-1<br/>
* 说明:编写一段程序,读入一个整数值,并显示它的绝对值<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0301 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值:");
int n = stdIn.nextInt();
int positiven = n;
if (n < 0) {
positiven = n * -1;
}
System.out.println("" + n + "的绝对值是:" + positiven);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-2
/**
*
*/
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:输入两个整数<br/>
* 如果后一个是前一个的约数,则输出后一个是前一个的约数<br/>
* 否则输出后一个不是前一个的约数<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0302 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值:");
int m = stdIn.nextInt();
int nmodem = -1;
String isornot = "不是";
if (m != 0) {
nmodem = n % m;
}
if (nmodem == 0) {
isornot = "是";
}
System.out.println("" + m + isornot + n + "的约数");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-3
/**
*
*/
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:将Sign.java最后一个else 改为 else if (n==0)会怎么样<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0303 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("整数值:");
int n = stdIn.nextInt();
if (n > 0) {
System.out.println("该值为正。");
} else if (n < 0) {
System.out.println("该值为负。");
} else if (n == 0) {
System.out.println("该值为0。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-4
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:写一个比较两个整数谁大的代码<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0304 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值m:");
int m = stdIn.nextInt();
if (m > n) {
System.out.println("m更大");
} else if (n > m) {
System.out.println("n更大");
} else if (n == m) {
System.out.println("一样大");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-5
/**
*
*/
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:输入一个数,如果是负数或0,则输出是负数或0<br/>
* 如果是正数,且能被5整除,就显示能被5整除<br/>
* 否则显示不能被5整除。
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0305 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
if(n<=0)
{
System.out.println("n不是正整数");
}else
{
if(n%5==0)
{
System.out.println("n能被5整除");
}
else
{
System.out.println("n不能被5整除");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-6
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:输入一个数,如果是负数或0,则输出是负数或0<br/>
* 如果是正数,且能被10整除,就显示是10的倍数<br/>
* 否则显示不是10的倍数。
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0306 {
/**
* @param args
*/
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
if(n<=0)
{
System.out.println("n不是正整数");
}else
{
if(n%10==0)
{
System.out.println("n是10的倍数");
}
else
{
System.out.println("n不是10的倍数");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-7
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:判断一个数是非正整数,还是3的倍数,或输出对3整除后的余数<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0307 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
if (n <= 0) {
System.out.println("n不是正整数");
} else {
int yushu = n % 3;
switch (yushu) {
case 0:
System.out.println("n能被3整除");
break;
case 1:
System.out.println("n被3除余1");
break;
case 2:
default:
System.out.println("n被3除余2");
break;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-8
/**
*
*/
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:按分数来输出成绩的等级<br/>
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0308 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入分数n:");
int n = stdIn.nextInt();
if (n <= 0) {
System.out.println("n不是分数");
} else {
int dengji = n / 10;
if(dengji<6)
{
System.out.println("不及格");
}
else if (dengji<7 )
{
System.out.println("及格");
}
else if (dengji <8)
{
System.out.println("良");
}
else if(dengji<=10 && n<=100)
{
System.out.println("优");
}
else
{
System.out.println("智商爆表");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-9
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:判断两个实数值谁大谁小,输出大值<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0309 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个实数值n:");
double n = stdIn.nextDouble();
System.out.print("请输入一个实数值m:");
double m = stdIn.nextDouble();
System.out.println(m > n ? m : n);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-10
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:输出两数差值<br/>
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0310 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值m:");
int m = stdIn.nextInt();
System.out.println(Math.abs(m-n));
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-11
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:判断两数差值与10的大小<br/>
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0311 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值m:");
int m = stdIn.nextInt();
int minus = Math.abs(m-n);
System.out.println(minus<=10?"差值小于等于10":"差值大于等于11");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-12
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:显示3个数最小值<br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0312 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值l:");
int l = stdIn.nextInt();
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值m:");
int m = stdIn.nextInt();
int min = l<n?l:n;
min= min<m?min:m;
System.out.println("最小值是:"+min);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-13
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:求中间值<br/>
* 说明:求三个数的中间值 <br/>
*
* @author Finersoft
* @date 2018年3月25日
*/
public class Ex0313 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("请输入一个整数值l:");
int l = stdIn.nextInt();
System.out.print("请输入一个整数值n:");
int n = stdIn.nextInt();
System.out.print("请输入一个整数值m:");
int m = stdIn.nextInt();
int max = l > m ? l : m;
int min = l < m ? l : m;
int mid = max < n ? max : n;
mid = mid > min ? mid : min;
System.out.println("中间值是:" + mid);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-14
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:显示两数关系<br/>
*
* @author Finersoft
* @date 2018年3月26日
*/
public class Ex0314 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
// 较小的值/较大的值
int min=0, max=0;
try {
System.out.print("整数a:");
int a = stdIn.nextInt();
System.out.print("整数b:");
int b = stdIn.nextInt();
if (b == a) {
System.out.println("a==b");
} else {
if (a < b) {
// 如果a小于b
min = a;
max = b;
} else if (b< a) {
// 否则
min = b;
max = a;
}
System.out.println("较小的值是" + min + "。");
System.out.println("较大的值是" + max + "。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-15
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:按从大到小排列输入的两个数<br/>
*
* @author Finersoft
* @date 2018年3月26日
*/
public class Ex0315 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("整数a:");
int a = stdIn.nextInt();
System.out.print("整数b:");
int b = stdIn.nextInt();
System.out.println(a > b ? "" + a + "," + b + "" : "" + b + "," + a + "");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-16
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:升值排列三个数<br/>
*
* @author Finersoft
* @date 2018年3月26日
*/
public class Ex0316 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
try {
System.out.print("整数l:");
int l = stdIn.nextInt();
System.out.print("整数m:");
int m = stdIn.nextInt();
System.out.print("整数n:");
int n = stdIn.nextInt();
int max = Math.max(l, m);
max = Math.max(max, n);
int min = Math.min(l, m);
min = Math.min(min, n);
int mid = (l + m + n) - (max + min);
System.out.println("从小到大:" + min + "," + mid + "," + max);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}
3-17
package com.finersoft.chap03.homework;
import java.util.Random;
/**
* 名称:<br/>
* 说明:随机生成0,1,2换算成石头剪刀布<br/>
*
* @author Finersoft
* @date 2018年3月26日
*/
public class Ex0317 {
public static void main(String[] args) {
try {
System.out.print("请选择手势(0…石头/1…剪刀/2…布):");
int hand = new Random().nextInt(3);
switch (hand) {
case 0:
System.out.println("石头");
break;
case 1:
System.out.println("剪刀");
break;
case 2:
System.out.println("布");
break;
default:
System.out.println("请出石头剪刀布中的一种");
break;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
3-18
package com.finersoft.chap03.homework;
import java.util.Scanner;
/**
* 名称:<br/>
* 说明:输入月份,显示输入月份表示的季节<br/>
* @author Finersoft
* @date 2018年3月26日
*/
public class Ex0318 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int m1 = 1, m2 = 2, m3 = 3, m5 = 5, m6 = 6, m8 = 8, m9 = 9, m11 = 11, m12 = 12;
try {
System.out.print("计算季节。\n请输入月份:");
int month = stdIn.nextInt();
if (month >= m3 && month <= m5) {
// 3月·4月·5月
System.out.println("这是春天。");
} else if (month >= m6 && month <= m8) {
// 6月·7月·8月
System.out.println("这是夏天。");
} else if (month >= m9 && month <= m11) {
// 9月·10月·11月
System.out.println("这是秋天。");
} else if (month == m12 || month == m1 || month == m2) {
// 12月·1月·2月
System.out.println("这是冬天。");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stdIn != null) {
stdIn.close();
}
}
}
}