一道简单JAVA题,求帮助!

import java.util.Scanner;
/**
* 编写JAVA程序,实现接收张三和李四的Java成绩,比较两人成绩高低,并输出所差分值
*/
public class GradeDemo {

public static void main(String[] args) { Scanner input = new Scanner(System.in);
// 提醒输入张三的成绩
System.out.print("输入学员张三的java成绩: ");
int zhangSan = input.nextInt();
// 提醒输入李四的成绩
System.out.print("输入学员李四的java成绩: ");
int liSi = input.nextInt();

// 定义变量保存成绩之差
int sub = zhangSan - liSi;
//定义输出信息变量
String info="张三的成绩比李四高"+ sub + "分" ;
String info2="李四的成绩比张三高" + (-sub) + "分";
// 输出比较结果
System.out.println(sub > 0 ?info :info2 );

}
}

-------------------------------------------------------------------------
System.out.println(sub > 0 ?info :info2 );
最后这个没有懂,求解释,谢谢!
String info2="李四的成绩比张三高" + (-sub) + "分";

还有这个,为什么是(-sub)呢?

sub > 0 ?info :info2,这个是三元操作?:。在很多时候,这个操作非常有用。表达式

condition ? expression1 : expression2
当条件condition为真时计算第一个表达式(expression1),否则计算第二个表达式。

这个表达式的意思即为:
1.判断sub是否大于0
2.若sub>0,则用info表达式
3.若sub<=0,则用info2表达式

因为你这个sub表示的是用张三的成绩减去李四的成绩,所以,正数表示张三比李四高,否则李四比张三成绩要高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-23
sub > 0 ?info :info2 这个是一个三目运算符,是对if判断语句的简写。
表示如果sub>0这个条件满足,就是冒号前面的结果,否则就是后面的结果
还原成if语句,加上输出语句如下:
if(sub>0){
System.out.println(info );
}else{
System.out.println(info2 );
}
这两个的实际功能是一样的。
第2个回答  2012-09-16
这个就是输出成绩高的, sub > 0 ?info :info2 就是一个运算,就是楼上说的,当sub>0就输出info,反之则输出info2,就相当于
if(sub>0)
{
System.out.println(info);
} else
{
System.out.println(info2);
}
第3个回答  2012-09-16
三步运算符。
sub > 0 为条件,“?”为固定格式,info和info2都为值。
如果条件为true则用第一个值,反之则用第二个值。
你这里说的就是,当sub 大于0的时候,打印输出info,否则输出info2。

对于这个问题
String info2="李四的成绩比张三高" + (-sub) + "分";
还有这个,为什么是(-sub)呢?
因为定义的 int sub = zhangSan - liSi;

如果控制台输出的info2,则表明sub<=0,假设张三的成绩是50,李四的成绩是80,那么则会输出
"李四的成绩比张三高" + (50-80=-30) + "分",这样就不是高了撒,所以(-sub)=30,理所当然就要(-sub),不然显示不出高多少分。
希望你能采纳!
第4个回答  2012-09-16
李四的成绩比张三高
int sub = zhangSan - liSi;
相似回答
大家正在搜