这道java题怎么做?

通过命令窗口输入张三和李四的JAVA,SQL,STB三科各自的成绩,获取两人单科成绩最高的那一科打印出来,计算两人三科的成绩的平均分进行比较。注意!不能用if或者三元运算... 通过命令窗口输入张三和李四的JAVA,SQL,STB三科各自的成绩,获取两人单科成绩最高的那一科打印出来,计算两人三科的成绩的平均分进行比较。
注意!不能用if或者三元运算来做!
展开
 我来答
totobi毕
2020-02-28 · TA获得超过480个赞
知道小有建树答主
回答量:295
采纳率:91%
帮助的人:108万
展开全部

因为你没有说清楚输入的数据类型是int还是double,所以我就按照int来做了

完全没有用if和任何除输入以外的接口

不一定是最好的方案,但我第一反应就是这样了

利用的原理是整形的负数在内存中的储存方式和java中的带符号移位运算,从而实现从二数中取较大者

注释说得很清楚了,输出格式自己改改就好,如果输入要求是double的话那就会麻烦一些了,不过原理都差不多

效果图

因为是在手机上写有点不方便,一些细节上的东西比如为什么不用数组储存和scanner的关闭我就不写了

下面是文字版,有不明白欢迎追问

import java.util.*;public class M{ //情况 x y z //a>b 0 1 0 //a<b 1 0 0 //a=b 0 0 1 static int bigger(int a,int b){ int x=(a-b)>>>31;//如果a<b则x=1 int y=(b-a)>>>31;//如果b>a则y=1 int z=1-x-y; //如果a=b,那么x,y都会是0,所以加一个z作为特判, //因为x和y至多有一个是1,当且仅当x=y时x=y=0,z=1 return a*y+b*x+a*z; } public static void main(String[] args){ Scanner sc=new Scanner(System.in); int A1,B1,C1; int A2,B2,C2; System.out.println("输入两人三科成绩"); A1=sc.nextInt();B1=sc.nextInt();C1=sc.nextInt(); A2=sc.nextInt();B2=sc.nextInt();C2=sc.nextInt(); int max1=bigger(bigger(A1,B1),C1); int max2=bigger(bigger(A2,B2),C2); System.out.println("张三的最高分"+max1); System.out.println("李四的最高分"+max2); int avg1=(A1+B1+C1)/3; int avg2=(A2+B2+C2)/3; System.out.println("张三的平均分"+avg1); System.out.println("李四的平均分"+avg2); } }

更多追问追答
追答

又找到了另外一种更加投机取巧的方法。。。这种感觉就有点无赖了
俊楠48
2020-02-27 · 超过35用户采纳过TA的回答
知道答主
回答量:68
采纳率:73%
帮助的人:13.5万
展开全部
帮你写了一份,但是发不上来,不知道怎么回事。
对不起!您的提问(回答)中包含不适合发表的内容,请修改后再提交
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mimiba212
2020-02-27 · TA获得超过413个赞
知道小有建树答主
回答量:1504
采纳率:64%
帮助的人:86.8万
展开全部
能用数学函数max min吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式