【有书共读(第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(); } } } }