这个程序有啥问题?

东di 2021-03-24 01:31:11
题是这样的:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133。 我编写了这个程序提示错误,将第三个if那行改成else就对了,为什么?我觉得运行的结果是正确的,debug也没发现毛病。
...全文
212 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
东di 2021-03-25
  • 打赏
  • 举报
回复
引用 8 楼 qq_39936465的回复:
[quote=引用 7 楼 weixin_56476859 的回复:] UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133 题就是这样,我图片里那个程序第三个if行改完else再提交答案就对了,否则就提示例子错误
你的程序本身就有问题,不知道你后来怎么通过的 例如:输入 999[/quote] 我知道if那行改成else程序没发生变化就行了,谢谢大佬
东di 2021-03-25
  • 打赏
  • 举报
回复
引用 8 楼 qq_39936465的回复:
[quote=引用 7 楼 weixin_56476859 的回复:] UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133 题就是这样,我图片里那个程序第三个if行改完else再提交答案就对了,否则就提示例子错误
你的程序本身就有问题,不知道你后来怎么通过的 例如:输入 999[/quote] 输入是系统输入的,输入默认是正确的
qq_39936465 2021-03-25
  • 打赏
  • 举报
回复
引用 7 楼 weixin_56476859 的回复:
UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133 题就是这样,我图片里那个程序第三个if行改完else再提交答案就对了,否则就提示例子错误
你的程序本身就有问题,不知道你后来怎么通过的 例如:输入 999
东di 2021-03-25
  • 打赏
  • 举报
回复
引用 6 楼 qq_39936465的回复:
[quote=引用 3 楼 weixin_56476859 的回复:] 那为什么我提交答案显示错误,改成else提交答案就对。考试系统不是只验证几个值吗?两次判断会不会导致结果出错?谢谢您
一般结果都会有数据测试的,你看看错题结果是哪个测试数据上有问题,至少你程序我看不出有啥问题。 要不你把题目贴出来看看。[/quote] UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133 题就是这样,我图片里那个程序第三个if行改完else再提交答案就对了,否则就提示例子错误
qq_39936465 2021-03-25
  • 打赏
  • 举报
回复
引用 3 楼 weixin_56476859 的回复:
那为什么我提交答案显示错误,改成else提交答案就对。考试系统不是只验证几个值吗?两次判断会不会导致结果出错?谢谢您
一般结果都会有数据测试的,你看看错题结果是哪个测试数据上有问题,至少你程序我看不出有啥问题。 要不你把题目贴出来看看。
东di 2021-03-25
  • 打赏
  • 举报
回复
引用 11 楼 qq_39936465的回复:
[quote=引用 10 楼 weixin_56476859 的回复:] 我知道if那行改成else程序没发生变化就行了,谢谢大佬
程序应该没有变化,但是你2次的括号位置是否正确就不知道了, 在英文输入法下,ctrl+a ,然后在 ctrl+shift+f,梳理一下格式, 你个括号格式看的怪怪的。[/quote] 嗯嗯,非常感谢
qq_39936465 2021-03-25
  • 打赏
  • 举报
回复
编译上没有问题,但是第二次if真的是多余的。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n, b, u;
		Scanner in = new Scanner(System.in);
		n = in.nextInt();
		if ((n >= 0) && (n / 100 < 24) &&(n % 100 < 60)) {
			b = n;
			u = b - 800;
			if (u < 0) {
				u = u + 2400;
			} 
			System.out.println(u);
		}
	}
qq_39936465 2021-03-25
  • 打赏
  • 举报
回复
引用 10 楼 weixin_56476859 的回复:
我知道if那行改成else程序没发生变化就行了,谢谢大佬
程序应该没有变化,但是你2次的括号位置是否正确就不知道了, 在英文输入法下,ctrl+a ,然后在 ctrl+shift+f,梳理一下格式, 你个括号格式看的怪怪的。
东di 2021-03-24
  • 打赏
  • 举报
回复
引用 4 楼 起名伤脑的回复:
用两次if是会判断两次 报的是啥错? 你的判断条件要么u<0 反之u>=0 if else 就可以了
用两次if虽然有点不规范,但是也没错误吧
起名伤脑 2021-03-24
  • 打赏
  • 举报
回复
用两次if是会判断两次 报的是啥错? 你的判断条件要么u<0 反之u>=0 if else 就可以了
东di 2021-03-24
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465的回复:
[quote=引用 楼主 weixin_56476859 的回复:]题是这样的:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133。 我编写了这个程序提示错误,将第三个if那行改成else就对了,为什么?我觉得运行的结果是正确的,debug也没发现毛病。
虽然不影响结果,但是你的程序没效率,本来用else只需要一次判断,你用2次if 要判断2次,没必要。[/quote] 那为什么我提交答案显示错误😭,改成else提交答案就对。考试系统不是只验证几个值吗?两次判断会不会导致结果出错?谢谢您
东di 2021-03-24
  • 打赏
  • 举报
回复
那为什么我提交答案显示错误😭,改成else提交答案就对。考试系统不是只验证几个值吗?两次判断会不会导致结果出错?谢谢您
qq_39936465 2021-03-24
  • 打赏
  • 举报
回复
引用 楼主 weixin_56476859 的回复:
题是这样的:UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。输入样例:933,输出样例:133。 我编写了这个程序提示错误,将第三个if那行改成else就对了,为什么?我觉得运行的结果是正确的,debug也没发现毛病。
虽然不影响结果,但是你的程序没效率,本来用else只需要一次判断,你用2次if 要判断2次,没必要。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧