eclipse使用
新建项目
填名字后直接完成,其他不要动
src存放java代码
新建包
java包是专门用来存放类的
相同的类放在相同包中
或者
新建类
或者
直接写名字 完成
这样新建的类 首行会多出一句 包声明
包声明只能位于java源文件首行
导入包
import 包名.类名
导入包所有类
import 包名.*
eg:
import java.util.Scanner
运行
P336_7
题目:
编写Temperature类,表示摄氏度、华氏度温度。浮点数表示温度,字符表示单位,C表示摄氏度,F表示华氏度。
该类包含
-
4个构造器:针对度数、针对单位、同时针对度数和单位、缺省构造器
对于每个构造器,没有指定值,默认为0度,没有单位,默认为摄氏度 -
2个访问器方法:返回摄氏度温度、返回华氏度温度。度数四舍五入到0.1度
-
3个设置方法:设置度数、设置单位、同时设置
-
3个比较方法:测试两个温度是否相等、是否比另一个高、是否比另一个低
编写驱动程序,测试所有方法。调用每个构造器、针对每个比较方法,测试一个为真,一个为假,测试0.0 C 与 32 F、-40 C与-40 F、100C与212 F相等性
摄氏温度c ,将其转化为华氏温度f ,转换公式为:f=c*9/5+32.
构造器
构造器:构造方法是一个在创建对象时被自动调用的特殊方法
double精度设置
两种方法
1.
Double result = Double.valueOf(String.format("%.1f", 5 * (tem - 32) / 9 ));
String result = String.format("%.1f", tem);
return Double.parseDouble(result.toString());
总
public double getTemC() {
if (unit != "C"){
//String result = String.format("%.1f", 5 * (tem - 32) / 9);
Double result = Double.valueOf(String.format("%.1f", 5 * (tem - 32) / 9 ));
//return Double.parseDouble(result.toString());
return result;
}else {
String result = String.format("%.1f", tem);
return Double.parseDouble(result.toString());
}
}
Double.parseDouble :转换成Double格式
代码:
Temperature
package java第二次作业;
public class Temperature {
public double tem;//温度
public String unit;//单位
//4个构造器
public Temperature(double a){
tem = a;
}
public Temperature(String a){
unit = a;
}
public Temperature(double a,String b){
tem = a;
unit = b;
}
public Temperature(){
tem = 0;
unit = "C";
}
//2个访问器方法
public double getTemC() {
if (unit != "C"){
Double result = Double.valueOf(String.format("%.1f", 5 * (tem - 32) / 9));
return result;
}else {
Double result = Double.valueOf(String.format("%.1f", tem));
return result;
}
}
public double getTemF() {
if (unit != "F") {
Double result = Double.valueOf(String.format("%.1f", (9 * tem / 5) + 32));
return result;
}else{
Double result = Double.valueOf(String.format("%.1f", tem));
return result;
}
}
//3个设置方法
public void setTem(double tem) {
this.tem = tem;
}
public void setUnit(String unit) {
this.unit = unit;
}
public void setBoth(double tem,String unit){
this.tem = tem;
this.unit = unit;
}
//3个比较方法
public boolean equal(Temperature a) {
tem = getTemC();
double t = a.getTemC();
return tem == t;
}
public boolean higher(Temperature a) {
tem = getTemC();
double t = a.getTemC();
return tem > t;
}
public boolean lower(Temperature a) {
tem = getTemC();
double t = a.getTemC();
return tem < t;
}
}
错误的Temperature
public boolean lower(Temperature a) {
tem = getTemC();
a.tem = a.getTemC();
return tem < a.tem;
}
a.tem = a.getTemC();
这样写会改变a的tem值,所以不能这样写
要设成一个局部值
p336_7
package java第二次作业;
public class p336_7 {
public static void main(String[] args) {
//构造器
Temperature t1 = new Temperature(32);
Temperature t2 = new Temperature("C");
Temperature t3 = new Temperature(100,"C");
Temperature t4 = new Temperature();
//设置方法
t2.setTem(-40);
t1.setUnit("F");
t4.setBoth(120,"F");
//访问器
System.out.println("------访问器------");
System.out.println("32 °F = " + t1.getTemC() + " °C");
System.out.println("-40 °C = " + t2.getTemF() + " °F");
//比较方法
System.out.println("------比较方法------");
Temperature t5 = new Temperature(-40,"F");
Temperature t6 = new Temperature(212,"F");
Temperature t7 = new Temperature();//0 °C
System.out.println("equal:");
System.out.println("0.0°C = 32.0°F :" + t7.equal(t1));
System.out.println("-40.0°C = -40.0°F :" + t2.equal(t5));
System.out.println("100.0°C = 212.0°F :" + t3.equal(t6));
System.out.println("0.0°C = -40.0°F:" + t7.equal(t5));
System.out.println("\nhigher:");
System.out.println("0.0°C > 212.0°F :" + t7.higher(t6));
System.out.println("0.0°C > -40.0°F:" + t7.higher(t5));
System.out.println("\nlower:");
System.out.println("0.0°C < 212.0°F :" + t7.lower(t6));
System.out.println("0.0°C < -40.0°F:" + t7.lower(t5));
}
}
结果:
p689_5
题目:
编写一个程序,使用一个HashMap来计算用户输人的正数的直方图。这个HashMap的键应该是输入的数字,而值应该是到目前为止对应的键已经输入的次数。将-1用作哨兵值,表示用户输入结東。例如,如果用户输人:
5 12 3 5 5 3 21 -1
这个程序应该输出下面的内容(不一定按照下面的顺序):
The number 3 occurs 2 times.
The number 5 occurs 3 times.
The number 12 occurs 1 times.
The number 21 occurs 1 times.
代码
参考代码:
使用java的hashmap统计输入的单词个数
用hashmap:
package java第二次作业;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Scanner;
public class p689_5 {
public static void main(String[] args) {
HashMap<String, Integer> words = new HashMap<>();
System.out.println("请输入要统计的正数(输入-1结束输入,一个正数一行):");
Scanner in = new Scanner(System.in);
String word;
while (!((word = in.nextLine()).equals("-1"))) {//如果输入为-1的时候终止输入
int count = 1;//默认一个数字就是出现一次
if (words.containsKey(word)) {//判断刚输入的数字是否已经存在
count = words.get(word) + 1;//如果已经存在,新的个数就在已有的个数上加1
}
words.put(word, count);//更新数据
}
in.close();
//遍历hashmap
Iterator<Entry<String, Integer>> iterator = words.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, Integer> entry = (Entry<String, Integer>) iterator.next();
System.out.println("The number " + entry.getKey() + " occurs " + entry.getValue() + " times");
}
}
}
用列表做:
import java.util.Scanner;
import java.util.ArrayList;
public class p689_5_2 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
ArrayList<Integer> List = new ArrayList<Integer>();
while (true) {
int digit = sc.nextInt();
if(digit == -1)
break;
else
List.add(digit);
};
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> count = new ArrayList<Integer>();
while (true) {
if(List.size()==0)
break;
int x = (int) List.get(0);
int num = 0;
for(int i = List.size()-1;i>=0;i--){
if((int)List.get(i) == x){
num++;
List.remove(i);
}
}
list.add(x);
count.add(num);
System.out.println("The number "+x+" occurs "+num+" times.");
};
}
}