我正在写一个简单的启动java程序。我面临的问题是公司名称没有正确添加。
public class Company {
public static BufferedReader br;
public static BufferedReader br1;
public static String numberOfCompanies;
public static void main(String[] args) {
// TODO Auto-generated method stub
CompanyDetails qw = new CompanyDetails();
try{
//Scanner in = new Scanner(System.in);
br = new BufferedReader(new InputStreamReader(System.in));
br1 = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter number of companies: ");
numberOfCompanies = br.readLine();
int G = Integer.parseInt(numberOfCompanies);
for (int i = 1; i <= G; i++) {
qw = new CompanyDetails();
System.out.println("Enter name of the company: ");
String company = br1.readLine();
qw.company(company, i);
}
for (int i = 0; i <= G; i++) {
qw.companySummary(G);
}
} catch (IOException io) {
io.printStackTrace();
}
}
}
class CompanyDetails {
String company, name;
public String input;
public static BufferedReader br;
public double iE;
public static String numberOfCompanies;
String nameOfCompany;
String[] nameofCompany1 = new String[100];
int ir,i,employee;
ArrayList<String> bulk = new ArrayList<String>();
public String[] company(String input, int i) {
// TODO Auto-generated method stub
//ArrayList bulk = new ArrayList();
//for(int ith = i; ith<= 2; i++){
nameOfCompany = i+input;
bulk.add(nameOfCompany);
bulk.add(nameOfCompany);
// }
return nameofCompany1;
}
public void employee(double d) {
// TODO Auto-generated method stub
ir = (int)d;
}
public void companySummary(int G) {
System.out.println("Number of companies: " + G);
System.out.println("Name of company: " +bulk +" ");
System.out.println("Number of employees: "+ir);
}
}我得到的输出是

为什么我在数组列表的第一位没有得到234 ??
发布于 2011-11-16 16:15:16
您将在循环的每次迭代中创建一个新的CompanyDetails对象,这是通过丢失先前的对象来实现的:
for (int i = 1; i <= G; i++) {
qw = new CompanyDetails();您已经在main方法的开头创建了一个CompanyDetails对象:
CompanyDetails qw = new CompanyDetails();因此,您不必在for循环中再次执行此操作。
发布于 2011-11-16 16:15:13
public String[] company(String input, int i) {
nameOfCompany = i+input;
bulk.add(nameOfCompany);
bulk.add(nameOfCompany); .// Why are you adding nameOfCompany twice .
return nameofCompany1; //Why are you returning nameofCompany1 which is null here }
qw = new CompanyDetails(); //this line should be out of the loop.在Naming Convention上工作。请提供更多关于您想要做什么以及您期望的输出的详细信息。
发布于 2011-11-16 16:15:41
看一下代码片段:qw = new CompanyDetails();是按循环实例化的。
它应该是:
qw = new CompanyDetails();
for (int i = 1; i <= G; i++) {
...
}正如@CodeBuzz指出的:删除company()方法中的bulk.add(nameOfCompany);,也不要迭代qw.companySummary(G);方法。
https://stackoverflow.com/questions/8148471
复制相似问题