打印具有相同值的变量名称

时间:2019-06-09 17:18:11

标签: java

我试图找到最大的数字并打印具有最大数字的变量名。可能存在具有相同最大数字的变量。我使用了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给出所有条件很复杂。我该如何用简单的逻辑做同样的事情?

1 个答案:

答案 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);

现在您可以打印它了。

在我看来,这是很棘手的,但是任何改进都需要使用数组。