题目要求
第二周编程作业
1.题目内容:
UTC 是世界协调时,BJT 是北京时间,UTC 时间相当于 BJT 减去 8。现在,你的程序要读入一个整数,表示 BJT 的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于 10,则没有千位部分;如果小时是 0,则没有百位部分;如果分小于 10 分,需要保留十位上的 0。如 1124 表示 11 点 24 分,而 905 表示 9 点 5 分,36 表示 0点 36 分,7 表示 0 点 7 分。有效的输入范围是 0 到 2359,即你的程序不可能从测试服务器读到 0 到 2359 以外的输入数据。你的程序要输出这个时间对应的 UTC 时间,输出的格式和输入的相同,即输出一个整数,表示 UTC 的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于 10,则没有千位部分;如果小时是 0,则没有百位部分;如果分小于 10 分,需要保留十位上的0。
提醒:要小心跨日的换算。
/*************************************************************
* author:minx
* function:utc国际协和时和bjt(北京时间)的换算。
* relationship:utc=bjt-8
* version:1.0.0
* time:2019-5-15
**************************************************************/
package com.visualworld.example;
import java.util.Scanner;
//必须考虑跨天的运算
public class UtcBtcTime {
//可能需要辗转相除法
public static void main(String[] args){
int UTC=0;
int BJT=0;
int B_thousand=0;//千
int B_hundrend=0;//百
int B_ten=0;//十
int B_per=0;//个
int resultTime = 0;
Scanner in=new Scanner(System.in);
System.out.print("请输入BJT:");
BJT=in.nextInt();
if (BJT < 0 || BJT > 2359) {
System.out.println("数据无效,请重新输入!");
return;
}
if (BJT >= 1000)//完整
{
B_thousand = BJT / 1000;
B_hundrend = (BJT - B_thousand * 1000) / 100;
B_ten = (BJT - (B_thousand * 1000) - (B_hundrend * 100)) / 10;
B_per = BJT - ((B_thousand * 1000) + (B_hundrend * 100) + (B_ten * 10));
resultTime = BJT - 8000;
System.out.println("UTC:" + resultTime);
} else if (BJT < 1000 && BJT > 800)//有小时
{
// B_thousand=0;
B_hundrend = BJT / 100;
B_ten = (BJT - (B_hundrend * 100)) / 10;
B_per = BJT - ((B_hundrend * 100) + (B_ten * 10));
resultTime = BJT - 800;
System.out.println("UTC:" + resultTime);
} else if (BJT < 800 && BJT >= 60) {
B_thousand = BJT / 1000;
B_hundrend = (BJT - B_thousand * 1000) / 100;
B_ten = (BJT - (B_thousand * 1000) - (B_hundrend * 100)) / 10;
B_per = BJT - ((B_thousand * 1000) + (B_hundrend * 100) + (B_ten * 10));
resultTime = (24 - (8 - B_hundrend)) * 100 + B_ten * 10 + B_per;
System.out.println("final time:" + resultTime);
} else if (BJT < 60 && BJT > 10) {
// B_thousand=0;
// B_hundrend=0;
B_ten = (BJT) / 10;
B_per = BJT - (B_ten * 10);
resultTime = BJT - 8;
System.out.println("UTC:" + resultTime);
} else {
B_ten = 0;//保留十位的0
B_per = BJT;//只有个位
resultTime = BJT - 8;
System.out.println("UTC:" + resultTime);
}
System.out.println(B_thousand);
System.out.println(B_hundrend);
System.out.println(B_ten);
System.out.println(B_per);
}
}
//if (10<a<100)