【问题标题】:how to make an array dynamically in JAVA?如何在 JAVA 中动态创建数组?
【发布时间】:2011-11-18 06:16:09
【问题描述】:

我的问题很简单,我想创建一个数组并用一些字符串项填充它。下面是一个简单代码,其中包含两个类一个主要方法(非常基本的程序)。

public class CompanyDetails {
public static void main (String[] args){

    CompanyInput apple = new CoInput();
    apple.coDetailsSummary("Apple","USA", "NA");
    apple.computeNoOfJoinees();

    CompanyInput htc = new CoInput();
    htc.coDetailsSummary("HTC", "Thailand", "NA");
    htc.computeNoOfJoinees();

}

}

public class CompanyInput {
float noOfJoinees;
String companyName;
String address;
String phoneNumber;
int randomInt,randomInt1;
int noOfEmployees;
Array gh;

void coDetailsSummary(String companyName, String address, String phoneNumber) {
    // TODO Auto-generated method stub

    System.out.println("Company Name                              : "+companyName); 
    System.out.println("Address                                   : "+address); 
    System.out.println("Contact Information                       : "+phoneNumber); 

}
void computeNoOfJoinees(){
    float m1,m2, m3;
    Random randomGenerator = new Random();
    for (int idx = 1; idx <= 10; ++idx)
        randomInt = randomGenerator.nextInt(30);
        randomInt1 = randomGenerator.nextInt(20);

        m1 = randomInt;
        m2 = randomInt1;
    m3 = m1+m2/100;
    System.out.print("The number of joinees joining every month : "+m3);
    System.out.println("\n");
}

}

我想创建一个名称为“companyName”的数组,并使用将作为输出给出的所有值填充它。

例如

Company Name                              : Apple
Address                                   : USA
Contact Information                       : NA
The number of joinees joining every month : 13.0

当我运行程序时,所有这些值都必须自动插入到数组中。结果应该是这样的

Apple[] = {Apple,USA,NA,13.0}

我怎样才能做到这一点?

【问题讨论】:

标签: java arrays


【解决方案1】:

使用 ArrayList,用于动态添加元素 在您的情况下,它将是 CompanyInput 对象的 ArrayList。

ArrayList<CompanyInput>companyName = new ArrayList<CompanyInput>();
companyName.add(new CompanyInput("Apple","USA","NA",13.0));
companyName.add(new CompanyInput("MSoft","USA","NA",15.0));

等等……

希望有帮助!

【讨论】:

    【解决方案2】:

    改变你的

    float noOfJoinees;
    String companyName;
    String address;
    String phoneNumber;
    int randomInt,randomInt1;
    int noOfEmployees;
    Array gh;
    
    void coDetailsSummary(String companyName, String address, String phoneNumber) {
        // TODO Auto-generated method stub
    
        System.out.println("Company Name                              : "+companyName); 
        System.out.println("Address                                   : "+address); 
        System.out.println("Contact Information                       : "+phoneNumber); 
    
    }
    

    进入

    void coDetailsSummary(String argCompanyName, String argAddress, String argPhoneNumber) {
        // TODO Auto-generated method stub
    this.companyName = argCompanyName
    

    // 其他参数类似。

    }
    

    然后将它添加到一个 ArrayList 并循环遍历它们并打印它。

    【讨论】:

      【解决方案3】:

      在 main 方法中,创建一个 CompanyInput 类型的 ArrayList,如下所示: 列表 listOfCompanies = new ArrayList();

      现在,将 CompanyInput 的所有实例一一添加到此列表中。例如 要将“苹果”添加到列表中: listOfCompanies.add(苹果);

      还将 Object 类的 toString 方法覆盖到 CompanyInput 类中。要知道如何覆盖 toString,您可以参考:http://www.javabeat.net/tips/12-overriding-the-tostring-method-in-object-cl.html

      现在,就像打印任何变量一样打印列表:- System.out.println(listOfCompanies);

      对于添加到列表中的所有实例,重写的 toString 方法的输出将打印到控制台。

      【讨论】:

      • 我尝试了你的想法。我得到这样的输出 [CompanyInput@190d11, CompanyInput@a90653, CompanyInput@de6ced, CompanyInput@c17164, CompanyInput@1fb8ee3, CompanyInput@61de33]。它是对象类型的。如何将其转换为显示字符串值?
      • @Vinoth :输出是这样的,因为您不能在其对象列表在 ArrayList 中创建的类中重写 toString 方法。覆盖 toString 方法并返回一些字符串输出。那么这将是输出而不是 CompanyInput@de6ced..
      【解决方案4】:

      如果你的 java 版本支持可变参数,那么你可以这样做:

      private static String[] createDynamicStringArray(String... items){
        return items;
      }
      

      用法:

      String[] items = createDynamicStringArray("item1", "item2", "item3");
      

      但我建议重新考虑您的设计。

      【讨论】:

      • 谢谢亚历克斯。我能知道您对程序设计的想法吗?
      • @Vinoth,我的意思是你应该考虑使用比数组更多的高级数据结构。就像已经建议的 ArrayList。
      【解决方案5】:

      您应该改用 List。数组不支持此功能。

      请在 Java 中搜索 List 相对于数组的优势

      【讨论】:

        猜你喜欢
        • 2011-02-12
        • 2016-12-18
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 2015-01-06
        相关资源
        最近更新 更多