java第二次作业

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.");
        };        
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第二次作业: 1. 编写点类(Point类),属性成员有x,y,都是double数据类型。需要为Point类编写构造函数。 编写直线类(Line类),需要提供两点确定一条直线的函数功能。 如果两点重合,可以返回异常或者返回null引用来解决这个问题。 直线类的数据成员和函数成员请自行设计。 2. 给定文本文件,文件名称为a.txt,文件内容为一个8行8列的字符矩阵,内容为1和0字符, 请编程计算出该矩阵中水平方向或者垂直方向或者斜线方 向连续1最多的个数。 例如: 11001101 10110101 01010101 11001000 01010101 11001101 00011000 11110000 3. 编写程序求出1万以内的所有素数,并将这些素数输出到一个文本文件中,每行文本只包含一个素数数据。 该文本文件内容要求可以用记事本程序来查看。 4. 编写程序求出1万以内的所有素数,然后再判断这些素数中哪些是由素数拼接而成的。 例如素数23就符合条件,23本身是素数,其由素数2,和素数3拼接(连接)组成。 素数29就不满足条件,2是素数,而9不是素数。素数307不满足条件,不能忽略0. 7907这个素数符合条件,7是素数,907是素数。 需要把符合条件的拼接素数全部输出,并统计个数。 5. 要求从控制台输入英语单词及单词解释两项数据, 把录入的数据追加到文件中。要求提供单词查询功能。 用户输入单词后,从单词库文件中查找,如果存在则输出 该单词的解释。注意,单词不能有重复,如果重复则覆盖替换 以前的解释数据。 6. 通过命令行参数输入一个文件夹的路径名称,然后编写程序找出该文件夹下文件名称重复并且文件大小也一样的文件, 如果没有“重复文件”,则输出“没有重复文件”的提示,如果有,需要输出文件名称,和文件所在的文件夹路径(绝对路径)。 提示,需要遍历该文件夹下所有子文件夹,设计一个文件类,属性包括文件名称,文件路径,文件大小,然后进行“重复” 判断,如果文件重复,则需要记录并输出,有可能有文件名重复,但是文件大小不一样,重复的文件可能不止2个,可能 在不同的子文件夹下有多个文件重复。 7. 霍夫曼编码实现压缩文本文件,见文件huffman.rar. 对文件数据读写等功能已经实现,程序在Q2Resources.zip中。 Q2Resources.zip中的文件禁止修改。请将TextZip.java文件所有未实现的函数按照要求给以实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值