Java 有秒计时的数字时钟 | 查找里程

一共是两道作业题,先是时钟后是查找里程,往下翻吧。(*´∀`)~♥


有秒计时的数字时钟

题目内容
这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。
我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:

  • public Clock(int hour, int minute, int second);
    用hour, minute和second初始化时间。
  • public void tick();
    “嘀嗒”一下,时间走1秒。
  • public String toString();
    返回一个String的值,以“hh:mm:ss“的形式表示当前时间。这里每个数值都占据两位,不足两位时补0。如“00:01:22"。注意其中的冒号是西文的,不是中文的。

提示: String.format()可以用和printf一样的方式来格式化一个字符串。

另外写一个Main类,它的main函数为下面的样子,注意,必须原封不动地作为Main的main函数(也就是说,人家已经给你写好main函数了,你直接复制就OK)

	public static void main(String[] args) {
		java.util.Scanner in = new java.util.Scanner(System.in);
		Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
		clock.tick();
		System.out.println(clock);
		in.close();
	}

注意! 在提交的时候,把Main、Clock和Display三个类的代码合并在一起,其中Main类是public的,而Clock和Display类是没有修饰符的。另外,千万注意第一行不能有package语句。

输入格式

采用给定的main函数无需考虑输入输出。

输出格式

采用给定的main函数无需考虑输入输出。


public class Main {

			public static void main(String[] args) {//给定的不需要修改的main函数
		java.util.Scanner in = new java.util.Scanner(System.in);
		Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
		clock.tick();
		System.out.println(clock);
		in.close();
	}

}
/*----------------------------------------------------------------------*/
class Time {	//设立一个数来计时
	private int value=0; //数值
	private int limit=0; //上限
	
	public Time(int limit) { //设立计数上限
		this.limit=limit;
	}
	public int SertValue(int n) { //修改上限
		return value=n;
	}
	public boolean increase() {
		boolean flag=false;
		value++;
		if(value==limit) {
			value=0;
			flag=true;
		}
		return flag;
	}
	public int getvalue() {
		return value;
	}
}
/*----------------------------------------------------------------------*/
class Clock {
	 Time hour = new Time (24);
	 Time minute = new Time (60);
	 Time second = new Time(60);
	public void tick() { //就嘀嗒一下
		second.increase();
    	if(second.getvalue()== 0){
    		minute.increase();
    		if(minute.getvalue()==0){
    			hour.increase();
    		}
    	}
	}
	
	public Clock(int hour, int minute, int second) {    //用hour, minute和second初始化时间。
		this.hour.SertValue(hour);
		this.minute.SertValue(minute);
		this.second.SertValue(second);
	}
	public String toString() {  //注意这个不需要换行符
		return String.format("%02d:%02d:%02d", hour.getvalue(),minute.getvalue(),second.getvalue());
	}
}




查找里程

题目内容:
下图为国内主要城市之间的公路里程:
这里写图片描述
你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程。

注意: 任何两个城市之间的里程都已经给出,不需要计算经第三地中转。
注意: 你并不需要去录入上图的数据,数据是在程序输入中给的。(也就是说他给你的那张图并没什么卵用

输入格式:
首先,你会读到若干个城市的名字。每个名字都只是一个英文单词,中间不含空格或其他符号。当读到名字为“###”(三个#号)时,表示城市名字输入结束,###并不是一个城市的名字。如果记读到的城市名字的数量为n。
然后,你会读到nxn的一个整数矩阵。第一行的每一个数字,表示上述城市名单中第一个城市依次到另一个城市之间的里程。表中同一个城市之间的里程为0。
最后,你会读到两个城市的名字。

输出格式:
输出这两个城市之间的距离。

输入样例:

Hagzou Hugzou Jigxng ###
0 1108 708
1108 0 994
708 994 0
Hagzou Jigxng

输出样例:

.708

注意: 不懂的看后边的补充。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Main {

	private static Scanner in;

	public static void main(String[] args) {
		in = new Scanner(System.in);
		
		ArrayList<String>City=new ArrayList<String>();
		HashMap<String,HashMap<String, Integer>>  h =new HashMap<String,HashMap<String, Integer>> (); 
		//↑↑↑注意这句了啊,看补充
		
		while(in.hasNext()) { //读取城市名字并存入ArrayList City中
			String str=in.next();
			if(str.equals("###"))
				break;
			else
				City.add(str);
		}
		
		for(int i=0;i<City.size();i++) {   //读入integer类型的矩阵
			HashMap<String, Integer> line =new HashMap<String, Integer>();
			for(int j=0;j<City.size();j++) {
				line.put(City.get(j),in.nextInt());
			}
			h.put(City.get(i),line);
		}
			
		//直接输出了呀↓↓↓
		System.out.println(h.get(in.next()).get(in.next()));
	}

}

补充:
就补充两点,代码中出现的两行HashMap<String,HashMap<String, Integer>> h =new HashMap<String,HashMap<String, Integer>> ();System.out.println(h.get(in.next()).get(in.next()));

HashMap<String,HashMap<String, Integer>>h.get(in.next()).get(in.next());
HashMap<K,V>中的Value:
① 不可以用普通数据类型,只能用相对应的封装类
②除了封装类也可是用户自己写的类,当然也可以是其他的Hashmap等等
③也可以为null(Key也可以为null)
h是key为String,Value为line,然后line是key为String,value为Integer
因此h.get(in.next())就是lineh.get(in.next()).get(in.next())就是line.get(in.next())

*٩(๑´∀`๑)ง我是萝莉安,我会加油的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ann's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值