需要压缩代码,代码不干

时间:2017-10-16 15:59:14

标签: java for-loop

我正在使用这个程序,它访问另一个类以进行变量命名。基本上,它有组织名称,他们每年赚多少,以及他们是否盈利。最后,我们需要打印每个组织的所有信息。目前,它正在发挥作用,但必须有一种方法将其缩短为for语句。

$project

6 个答案:

答案 0 :(得分:1)

覆盖Organization.toString(),只覆盖println(organization)

答案 1 :(得分:1)

扩展我的评论,我假设你有一个看起来像这样的课程:

class Organization {
  String name;
  int revenue; //guessing the type
  double profit; //guessing the type
}

因此,您可能需要一个组织列表:

List<Organization> orgs = ...; //initialize the list of your 6 organizations here

然后你可以编写你的代码(一种可能的方式):

boolean first = true;
for( Organization o : orgs ) { 
  //if it's not the first entry then print an empty line first
  if( !first) {
    out.println();
  } 

  out.println(o.name);
  out.println("$" + o.revenue);
  out.println("For Profit: " + o.profit);

  first = false;
}

请注意,还有其他方法可以打印,例如使用Java 8流或其他实用程序,但我会留下那些供您探索。

答案 2 :(得分:1)

帕特里克回答是正确的。
但是你也应该考虑toString()是一种调试目的方法 您应该避免使用特定格式。

Organization中,您可以引入一种方法来打印当前实例:

public void print()
   out.println(name);`
   out.println("$"+revenue);`
   out.println("For Profit: "+profit);`
   out.println();`
}

现在,您可以在以下每个方法上调用该方法:

 Organization1.print();
 Organization2.print();
 Organization3.print();
 Organization4.print();
 Organization5.print();
 Organization6.print();

或者更好的是,将它们添加到List中并迭代打印每一个:

List<Organization> organizations = Arrays.asList(Organization1, Organization2, ...);    
organizations.stream().forEach(Organization::print);

答案 3 :(得分:1)

作为覆盖toString()的替代方法,请考虑创建一个方法,将类的摘要作为String返回:

    public String getSummary() {
       StringBuffer sb = new StringBuffer();
       sb.append(name);
       sb.append("\n$"+revenue);
       sb.append("\nFor Profit: "+profit);
       return sb.toString();
    }

然后,您可以简单地遍历组织以打印摘要:

    for(Organization organization: organizationList)
        System.out.println(organization.getSummary());

答案 4 :(得分:0)

使用Class.forName(&#34; ClassDemo&#34;)来调用类并获取名称,收入和利润

例如在for循环中

System.out.println(Class.forName("Organization"+i).name)
System.out.println(Class.forName("Organization"+i).revenue)
System.out.println(Class.forName("Organization"+i).profit)

阅读以下文档以获取更多信息 https://www.tutorialspoint.com/java/lang/class_forname_loader.htm

答案 5 :(得分:0)

我认为你可以重写所有类Organization1-6来扩展一个名为Organization的父类,它有一个方法show()和名称,收入,利润属性,并且在show()中你可以打印所有信息你想要的,子类的每个对象也可以调用这个方法