我试图找到最大的数字并打印具有最大数字的变量名。可能存在具有相同最大数字的变量。我使用了else逻辑来做到这一点。
int a=2,b=2,c=1,great;
if((a>b)&&(a>c))
great=a;
else if(b>c)
great=b;
else
great=c;
if(great==a)
System.out.println("a");
else if(great==b)
System.out.println("b");
else if((great==a)&&(great==b))
System.out.println("a,b");
如果假设其中9个变量具有相同的值中有10个变量,则打印所有9个变量的名称,使用if给出所有条件很复杂。我该如何用简单的逻辑做同样的事情?
答案 0 :(得分:0)
如果必须使用单独的变量...(但是使用数组会更好,更短,更易于扩展,能够使用不同数量的输入进行复制等)。
第1步-找出“好”。
int great = a;
if (b > great) great = b;
if (c > great) great = c;
:
第2步-打印变量名称;您只需提及每个变量一次。
if (a == great) System.out.print("a ");
if (b == great) System.out.print("b ");
if (c == great) System.out.print("c ");
:
System.outprintln();
您根本不必处理可能的组合;您可以自己对待每个变量。该代码是重复的,数组可以通过允许轻松遍历这些值来治愈。
我使用空格作为分隔符,而不是逗号,因为它更容易。没有人会注意到在最后打印的名称之后有一个空格,而逗号看起来是错误的。
Fancier格式。
// First we have to collect all "greatest" names.
// Always insert comma separator, which will leave us
// with (e.g.) ", a, b, c". We'll fix it up later.
String names = "";
if (a == great) names += ", a";
if (b == great) names += ", b";
if (c == great) names += ", c";
:
// If there are more than 2 greats we want to insert "and"
// thus ", a, b, c" => ", a, b, and c". Note that another-dave
// is a fan of the oxford comma (so we do not want ", a, b and c").
if (names.length() > 6) { // if more than 2 greats (3 chars each)
names = names.substring(0, names.length()-1) + "and " +
names.substring(names.length()-1);
// Finally, ditch the incorrect leading comma and space
names = names.substring(2);
现在您可以打印它了。
在我看来,这是很棘手的,但是任何改进都需要使用数组。