将此内容用于家庭作业,代码以数组形式提供给我们,我们必须将其转换为arraylist。
这是硬件问题:修改Programmer类,以便arts数组数据成员是String的ArrayList。另外,使addTechnology更复杂一点:如果我们尝试将Technology'tech'添加到已经在其数组列表中具有'tech'的Programmer中,那么不应该对数组列表进行任何更改。 (即,在这种情况下,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方法中,我如何更改arraylist的那些?
答案 0 :(得分:1)
要从ArrayList
检索值,请使用get(int)
方法。
使用数组时,符号array[i]
用于获取和设置值:
int[] array = new int[10];
array[0] = 1;
int i;
i = array[0];
array[0] = i;
使用数组列表时,每个数组都有自己的方法:
ArrayList<int> array_list = new ArrayList<int>();
array_list.add( 1 );
int i;
i = array_list.get( 0 );
array_list.set( 0, i );
答案 1 :(得分:0)
只需使用ArrayList.get(int index)
方法获取该索引处的对象即可。是array[i]
等价物。
technologies.get(i);
答案 2 :(得分:0)
我的问题是在代码的底部,在toString方法中,怎么做 我为arraylist换了那些?
您可以编写如下的toString()方法: -
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 ");
for(String technology:technologies){
returnVal.append(technology).append(",");
}
}
return returnVal.substring(0, returnVal.lastIndexOf(",")).toString();
}