2012-01-02 138 views
1

如何在不使用IF的情况下比较两个值。我知道可以使用= ?或类似的东西。例如,让我们比较两个阵列列表ct的大小。对于这一点,我想用类似的代码:在Java中使用'=?'比较两个值

boolean answ = ? c.size() = t.size(); 
+0

为什么你想避免'if'?它可能揭示出你真正想要达到的目标......这仅仅是为了分配的目的吗? [这确实是使用trinary操作符的一个很好的理由...] – amit 2012-01-02 11:38:19

+0

并且比较具体到底是什么? – fge 2012-01-02 11:38:47

+2

boolean answ =(c.size()== t.size()); – dkulkarni 2012-01-02 11:41:14

回答

6

尝试boolean answ = c.size() == t.size();

三元运算符,?,用于获取2个的一个答案,你不需要它,如果你只需要一个布尔答案。

0

要比较通常使用==而不是=的值,除非您要比较非原始值(如果您在类中正确覆盖它,则必须使用equals方法)。

一个单一的=是用于作曲,而不是测试相等。

+1

对'String'的引用在这里有误解:实际上,您希望对所有*非原始值使用equals()。 'String'绝不是特别的。 – alf 2012-01-02 11:45:43

2

这应该工作:

boolean answ = c.size() == t.size(); 

什么你可能还记得是短if else结构:

return c.size() == t.size() ? true : false; 
+0

后者不会编译。 – alf 2012-01-02 17:50:41

+0

啊当然,回报一定要先......谢谢! – WarrenFaith 2012-01-03 03:44:42

4

如果你需要使用?你必须写:

boolean answ = (c.size() == t.size() ? true : false); 

但是这比写

boolean answ = (c.size() == t.size() ); 
1

你的意思是三元运算符长多少?

result = expr1 ? expr2 : expr3; 

如果expr1 true那么result分配的expr2的结果,expr3否则结果。所以:

boolean answ = c.size() == t.size() ? true : false; 
2

该代码将比较不使用if

boolean answ s= (c.size()==t.size()) ? true : false; 
+0

它正在使用,它只是写得很快而且开销也在那里。为什么使用三元运算符,如果它没有运行? – WarrenFaith 2012-01-02 14:23:29