第 02 课:变量、数据类型、运算与键盘输入
第 02 课变量、数据类型、运算与键盘输入本课目标学完后你应当能够用变量保存整数、小数、文字和真假状态。修改变量并完成基本运算。使用Scanner接收键盘输入。看懂常见的类型错误。1. 用 IDEA 打开学习目录打开 IDEA选择Open。打开C:\Users\26439\Desktop\java学习。如果提示选择 SDK选本机的JDK 17。打开代码/02-变量与输入/ProfileCard.java。点击main左边的绿色三角运行。若中文乱码在 IDEA 的Settings → Editor → File Encodings中把 Global Encoding 和 Project Encoding 设为 UTF-8。2. 变量是什么变量可以理解成一个“带名字、有限定类型的盒子”intage20;int盒子只能放整数。age变量名以后用它找到这个值。把右边的值赋给左边不是数学中的“相等”。20当前保存的值。变量可以改变intscore60;score80;scorescore5;// 现在是 85第二次赋值时不再写int因为变量已经声明过了。3. 目前最常用的数据类型类型保存什么示例int整数int age 20;long很大的整数long population 1_400_000_000L;double小数double price 19.9;boolean真或假boolean employed false;char单个字符使用单引号char level A;String一段文本使用双引号String name 小明;注意String首字母大写因为它不是基本数据类型而是一个类。暂时先会用面向对象阶段再解释。常见错误intage20;// 错文字不能直接放进整数变量charlevelA;// 错char 要用单引号Stringname小明;// 错String 要用双引号4. 运算和类型inta7;intb2;System.out.println(ab);// 9System.out.println(a-b);// 5System.out.println(a*b);// 14System.out.println(a/b);// 3不是 3.5System.out.println(a%b);// 1余数两个int相除结果仍是int小数部分会被丢掉。想得到小数doubleresult(double)a/b;// 3.5(double) a称为类型转换先把a当成小数参与运算。字符串遇到表示拼接Stringname小明;intage20;System.out.println(我叫name今年age岁);5. 使用 Scanner 接收输入先导入再创建再读取importjava.util.Scanner;ScannerscannernewScanner(System.in);Stringnamescanner.nextLine();// 读取一整行文字intagescanner.nextInt();// 读取整数doublehoursscanner.nextDouble();// 读取小数scanner.close();如果nextInt()期待整数你却输入abc或1.5程序会抛出InputMismatchException。这说明输入不符合程序要求异常处理以后专门学习。6. 先运行完整示例运行代码/02-变量与输入/ProfileCard.java尝试输入小明 20 2.5然后修改输入观察每周学习时间怎样变化。不要只看代码至少亲手运行两次。7. 独立练习学习计划计算器打开LearningPlanCalculator.java。独立练习现已补全可以运行后对照下面的关键代码doublehoursPerWeekdaysPerWeek*hoursPerDay;doubletotalHourshoursPerWeek*totalWeeks;System.out.println(name你每周计划学习 hoursPerWeek 小时。);System.out.println(坚持 totalWeeks 周总计约 totalHours 小时。);程序需要输入姓名。输入每周学习天数。输入每天学习小时数。计算每周学习小时数。计算坚持 24 周的总小时数。输出一段完整的学习计划。例如输入小明 6 2.5结果应该包含小明你每周计划学习 15.0 小时。 坚持 24 周总计约 360.0 小时。8. 三个检查题int x 5 / 2;中x是多少为什么String使用单引号还是双引号char呢int age 18;为什么不能编译答案x是2。5和2都是int因此执行整数除法小数部分直接丢弃。String使用双引号例如Javachar使用单引号例如J。18的类型是String而age要求int类型不兼容。可用Integer.parseInt(18)转换但当前从Scanner.nextInt()直接读取即可。下一课进入if / else让程序真正开始“做决定”。