java - 我想替换元素
问题描述
我的名字是地球000。
我想改变人们的顺序,我想把每个人都AT()联系起来。
与公开课Lead详细讲解,
白色,zap 黑色,zap 黄色,kaboom
↓ li.swap()
黑色,zap 黄色,kaboom 白色,zap
请检查猎人,剑士,牧师和团体。另一个代码是问题陈述的副本。
public class Human {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Human() {
setName("no name");
}
public Human(String name) {
this();
setName(name);
}
}
/////////////
public class Hunter extends Human{
public Hunter(){}
public Hunter(String name){
super(name);
}
public String attack(){
return "Yaa";
}
}
///////
public class Swordman extends Hunter{
public Swordman(){
}
public Swordman(String name){
super(name);
}
public String attack(){
return "zap";
}
}
/////////////////
public class Clergyman extends Hunter{
public clergyman(){ }
public clergyman(String name){
super(name);
}
public String attack(){
return "kaboom";
}
}
///////////
import java.util.StringJoiner;
import java.util.ArrayList;
public class Humans <T extends Human> {
ArrayList<T> people;
public Humans() {
people = new ArrayList<>();
}
public void add(T one) {
people.add(one);
}
public int size() {
return people.size();
}
@Override
public String toString() {
StringJoiner j = new StringJoiner(", ");
for (T one : people)
j.add(one.getName());
return j.toString();
}
}
///////////
import java.util.StringJoiner;
public class Group extends Humans<Hunter>{
public Group(){
super();
}
public void swap(){
String lead = people(0);
for(int i=0;i<size()-1;i++){
people(i) = people(i+1);
}
people(size()-1) = lead;
if(size()<=1){return;}
}
public String everyoneAT(){
StringJoiner j = new StringJoiner(", ");
for(T one : people){
j.add(one.Attack());
return j.toString();
}
}
}
//////////////////////First challenge
import java.human.*;
public class First{
public static void main(String[] args){
Group li = new Group();
li.add(new Swordman("white"));
li.add(new Swordman("black"));
li.add(new Clergyman("yellow"));
System.out.println(li);
System.out.println(li.everyoneAT());
li.swap();
System.out.println(li);
System.out.println(li.everyoneAT());
}
}
/////////Second challenge
import java.Human.*;
public class Second{
public static void main(String[] args){
Group li = new Group();
System.out.println(li);
System.out.println(li.everyoneAT());
li.swap();
System.out.println(li);
System.out.println(li.everyoneAT());
}
}
///Third challenge
import java.human*;
public class Third{
public static void main(String[] args){
Group li = new Group();
li.add(new Swordman("white"));
System.out.println(li);
System.out.println(li.everyoneAT());
li.swap();
System.out.println(li);
System.out.println(li.everyoneAT());
}
}
解决方案
你在Group
课堂上犯了一些小错误。
首先,有必要了解ArrayList
通过索引从 an 中检索元素的正确方法。您应该检索为people.get(0)
. 另外,在您的情况下,people
是猎人列表,因此您不能将其分配给String
班级。您应该将其分配给如下Hunter
类型:
Hunter lead = people.get(0);
此外,要将项目添加到 中的特定索引ArrayList
,您应该调用add
将索引作为第一个参数传递。因此,您的方法应如下所示:
public void swap() {
Hunter lead = people.get(0);
for (int i = 0; i < size() - 1; i++) {
people.add(i, people.get(i + 1));
}
people.add(size() - 1, lead);
if (size() <= 1) {
return;
}
}
你的everyoneAT
方法也有错误。people
是 的列表Hunter
,因此您的 for 循环应如下所示:
for (Hunter one : people) {
j.add(one.attack());
}
推荐阅读
- sql-server - 使用 powershell 脚本未在邮件中显示图像
- php - 为什么第二个 move_uploaded_file 函数在此代码中不起作用?
- wordpress - Woocommerce 产品页面未显示更新价格
- python - python中系列的新列变量
- javascript - TypeError:无法在“MediaStream”上执行“addTrack”:参数 1 不是“MediaStreamTrack”类型
- reactjs - 如何为 react-bootstrap-typeahead 解决此错误
- python - Python 中的属性字典元素 - Dict.Element - PyTricks
- javascript - Gatsby/Wordpress 站点的 Netlify 部署失败
- swift - 如果值为 0 %,如何从图表中删除标签
- arrays - 如何在 Typescript 中使用数组和对象设置状态?