讓家庭作業有這個東西,代碼被賦予給我們一個數組,我們必須將它轉換爲數組列表。從數組改變東西到數組列表
這裏是硬件問題:修改Programmer類,使技術數組數據成員是String的ArrayList。另外,讓addTechnology更加複雜一點:如果我們試圖將技術'技術'添加到已經在其數組列表中有'tech'的程序員,那麼不應該對數組列表進行更改。 (也就是說,addTechnology操作在這種情況下什麼都不做)。另外,修改getSalary方法,以便每個知道Java的程序員獲得額外的$ 3000獎金。因此,例如,知道C++能掙$ 5000個獎金,但我們知道的Java賺$ 8000個
這裏是原代碼:
public class Programmer extends Employee
{
private String[] technologies;
public Programmer(String name, String ssn)
{
super(name, ssn, 65000.00);
technologies = new String[0];
}
public void addTechnology(String tech)
{
String[] newArray = new String[technologies.length + 1];
for (int i = 0; i < technologies.length; i++)
newArray[i] = technologies[i];
newArray[technologies.length] = tech;
technologies = newArray;
}
public double getSalary()
{
return super.getSalary() + technologies.length * 5000.00;
}
/*public String toString()
{
String returnVal = "Programmer " + super.toString() + " and knows";
for (String tech : technologies)
{
returnVal += " " + tech; // Note: Inefficient due to String concatenation.
// Also lacks punctuation.
}
return returnVal;
}*/
public String toString()
// This version inserts commas between the technologies
// It also generates the string efficiently, using a StringBuilder object.
{
StringBuilder returnVal = new StringBuilder("Programmer ");
returnVal.append(super.toString());
if (technologies.length > 0)
{
returnVal.append(" and knows ");
if (technologies.length == 1)
{
returnVal.append(technologies[0]);
}
else if (technologies.length == 2)
{
returnVal.append(technologies[0]);
returnVal.append(" and ");
returnVal.append(technologies[1]);
}
else
{
for (int i = 0; i < technologies.length - 1; i++)
returnVal.append(technologies[i] + ", ");
returnVal.append("and ");
returnVal.append(technologies[technologies.length - 1]);
}
}
return returnVal.toString();
}
}
和這裏是我目前有:
import java.util.*;
public class Programmer extends Employee
{
ArrayList<String> technologies = new ArrayList<>();
public Programmer(String name, String ssn)
{
super(name, ssn, 65000.00);
}
public void addTechnology(String tech)
{
if (technologies.contains(tech))
System.out.println("The technology is already contained in the array");
else
technologies.add(tech);
//
}
public double getSalary()
{
double salary = super.getSalary() + technologies.size() * 5000.00;
if(technologies.contains("Java")){
salary = salary + 3000;
return salary;
}
else
return salary;
}
/*public String toString()
{
String returnVal = "Programmer " + super.toString() + " and knows";
for (String tech : technologies)
{
returnVal += " " + tech; // Note: Inefficient due to String concatenation.
// Also lacks punctuation.
}
return returnVal;
}*/
public String toString()
// This version inserts commas between the technologies
// It also generates the string efficiently, using a StringBuilder object.
{
StringBuilder returnVal = new StringBuilder("Programmer ");
returnVal.append(super.toString());
if (technologies.size() > 0)
{
returnVal.append(" and knows ");
if (technologies.size() == 1)
{
returnVal.append(technologies.indexOf());
}
else if (technologies.size() == 2)
{
returnVal.append(technologies[0]);
returnVal.append(" and ");
returnVal.append(technologies[1]);
}
else
{
for (int i = 0; i < technologies.size()- 1; i++)
returnVal.append(technologies[i] + ", ");
returnVal.append("and ");
returnVal.append(technologies[technologies.length - 1]);
}
}
return returnVal.toString();
}
}
我問題在代碼的底部,在toString方法中,我如何更改數組列表的內容?
太多的代碼,請確定您的問題,你的代碼修剪到最低 – Dici