[Java] 实验5参考代码
来源:互联网 发布:拓扑学 网络课程 编辑:程序博客网 时间:2024/05/29 14:31
实验4月3日晚截止,实验截止后将在此给出完整的参考代码。
1. 如何使用下面的代码模板:
1.1 在eclipse中创建对应名称的类
1.2 将代码复制到类文件里
1.3 在//todo注释中输入你用于解题的代码。
1.4 例子:参考第一题“显示两级名字”,大家就可以这么做
1.4.1 在eclipse中创建类,名字叫做PassOrFail
1.4.2 将下面的代码复制到.java文件中,并删除//todo注释,开始在while循环里写代码 (判断成绩是否大于60, 输出等)
1.4.3 将写好的PassOrFail.java上交到实验网站上
2. 不了解什么是缩进的可以参考什么是代码缩进(code indent), 或与周围同学讨论。
3. 自动排版快捷键:ctrl + shift + F (很方便的,一定要试试。谁用谁知道:P)
显示两级名字
这题目的名字真烂... 代码:
import java.util.Scanner;public class PassOrFail {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {// todo}}}
找最小值
提示
1. 两个数的最小值
int minimal = Math.min(a, b);
import java.util.Scanner;public class FindMinimal {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {// todoSystem.out.println("min is " + min);}}}
求三角形的面积和周长
提示
1. if后面跟多条语句的时候,需要用花括号,将“多条语句”括起来,使它们变成一个“复合语句”.
2. 条件A, B的“逻辑与”关系
if (conditionA && conditionB) { // todo} else { // todo}3. 条件A, B的“逻辑或”关系
if (conditionA || conditionB) { // todo} else { // todo}
4. 求平方根
sqrt方法大家之前用过,可以去看[Java] 实验3参考代码.
代码模板
import java.util.Scanner;public class Triangle {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {float a = in.nextFloat();float b = in.nextFloat();float c = in.nextFloat();// todo}}}
判断数的符号
import java.util.Scanner;public class JudgeSign {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {int num = in.nextInt();// todo}}}
计算个人所得税
提示
1. 什么是初始化
大家可以去群里下载《Java核心技术 卷1 基础知识 (原书第9版)》,参考"3.4.1 变量初始化"部分。
2. 为什么在这道题中,有些同学会出现编译错误:“可能使用未初始化的变量”
根据语法,变量在读取前必须被赋值(Variables must be initialized before used.).
考虑下述代码:
double rate;if (conditionA) { rete = 0.05;} else if (condition B) { rate = 0.1;} else if (condition C) { rate = 0.2;}double res = rate; // compilation error!!!代码最后一行做的事,是读取rate的值,将这个值赋值给res.
根据语法,这个rate的值在被读取前需要被初始化(非正式地可以理解成“赋值”)。问题是,从编译器的角度上看,如果分支A, B, C都没有被执行,那么rate可能就没有被赋值,所以在double res = rate中,试图读取rate的值就是非法的。
有些同学会说,为解决这个问题,可以在定义rate的时候先随便给它赋一个值:double rate = 0.
这样可以阻止编译器报错,但未必是并非最优的解决方案。如果A, B, C三个分支能包含整个条件空间,那么我认为代码应该写成这样更为合理:
double rate;if (conditionA) { rete = 0.05;} else if (condition B) { rate = 0.1;} else { // there is no if here!!! rate = 0.2;}double res = rate;
程序模板
import java.util.Scanner;public class Tax {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {float salary = in.nextFloat();// todoSystem.out.println("tax=" + (int)(tax * 100 + 0.5) / 100d);}}}
显示水果的价格
import java.util.Scanner;public class Fruits {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {System.out.println("[1] apples");System.out.println("[2] pears");System.out.println("[3] oranges");System.out.println("[4] grapes");int choice = in.nextInt();// todo}}}
字母转换
import java.io.*;public class CharacterConversion {public static void main(String[] args) throws IOException {for (int ch = System.in.read(); ch != '?'; ch = System.in.read()) {// todoSystem.out.print((char)ch);}}}
计算分段函数的值
import java.util.Scanner;public class PiecewiseFunction {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {int x = in.nextInt();double y;// todoSystem.out.println("f(" + x + ")=" + y);}}}
求一元二次方程的根
提示
1. 为什么 (int) (x * 100 + 0.5) / 100d的方法有些时候会出错?
因为这个方法只能应付x >= 0的情况,考虑 x = -2.5, 那么
x * 100 = -250
-250 + 0.5 = -249.5
(int) -249.5 = -249
-249 / 100d = -2.49
注意到,在此我们想要的结果是-2.5而不是-2.49
2. 四舍五入保留两位小数
public class Test { public static void main(String[] args) { double num = 3.1415926535; for (int i = 0; i <= 10; ++ i) { System.out.println(remainDigits(num, i)); } } static double remainDigits(double num, int digitsToRemain) { // e.g. remainDigits(3.14159, 2) was called, then it will return // Math.round(3.14159 * 100d) / 100d, which equals 3.14 return Math.round(num * Math.pow(10, digitsToRemain)) / Math.pow(10, digitsToRemain); }}
import java.util.Scanner;public class Root {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {int a = in.nextInt();int b = in.nextInt();int c = in.nextInt();// todo}}}
显示五级记分制成绩所对应的百分制成绩区间
import java.util.Scanner;public class Grade {public static void main(String[] args) {Scanner in = new Scanner(System.in);int repeat = in.nextInt();while (repeat-- != 0) {// todo}}}
- [Java] 实验5参考代码
- [Java] 实验2参考代码
- [Java] 实验3参考代码
- [Java] 实验4参考代码
- [Java] 实验6参考代码
- [Java] 实验7参考代码
- 上传了部分实验代码供参考
- 数据库第一次实验创建数据表参考代码
- 第一次实验内容及参考代码
- 面向对象第一次实验参考代码
- 【计服15】实验三参考代码
- java代码参考规范
- pki java相关代码参考
- Java第一次作业参考代码
- Java第二次作业参考代码
- 面向对象程序设计 第五次实验参考代码
- 面向对象程序设计 第六次实验参考代码
- java实验三 实验报告代码
- 将基本数据类型值作为对象处理
- jpa 里用的分页实现类org.springframework.data.domain.PageImpl<T>
- 【BZOJ1922】【Tyvj1736】【codevs2129】大陆争霸,无语最短路
- PAT (Advanced Level) Practise 1092 To Buy or Not to Buy (20)
- 玩转Flume+Kafka原来也就那点事儿
- [Java] 实验5参考代码
- Spring事务配置的五种方式
- 歌词滚动显示
- setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别
- jpa 的分页类org.springframework.data.domain.Page<T>
- POJ 2299 Ultra-QuickSort(逆序对数,线段树/树状数组/归并排序)
- Maven详解之仓库------本地仓库、远程仓库
- 与LSGO一起学“第2章 做一个简短的C++程序(2.1简单的屏幕输出小程序)”
- 傅里叶分析的理解