2017-02-02 5 views
-2

У меня есть эти монстры в LinkedList, и он выполняет итерацию через него. Кроме того, что я хочу, чтобы мой выход выглядеть следующим образом:LinkedList iterating

Кричащие-Monster "Боб" с fightingpower 1

Fighting-Monster "Томь" с fightingpower 6

Fighting-Monster "Дэйв" с fightingpower 7

Крик-Бой-монстр "Стив" с fightingpower 3

Как это АРХИВ?

public class AdventureGame { 

public static void main(String[] args) { 

    LinkedList <String> monsterList = new LinkedList <String>(); 

    monsterList.add("Screaming-Monster \"Bob\""); 
    monsterList.add("Fighting-Monster \"Tom\""); 
    monsterList.add("Fighting-Monster \"Dave\""); 
    monsterList.add("Scream-Fight-Monster \"Steve\""); 

    for(int i=0; i<monsterList.size(); i++){ 
     System.out.println(monsterList.get(i)); 
    } 
}} 
+1

Либо измените строки, чтобы включить значения боевой силы, либо создайте класс Monster, который принимает тип, имя, мощность и имеет осмысленный метод toString. – hexafraction

+0

У вас есть более конкретный вопрос: «Как мне это достичь?» Или вы просто хотели, чтобы мы сделали вам домашнее задание? Похоже, вы отлично стартовали! – mkasberg

+0

конкретный вопрос: как мне это сделать только с одной итерацией И не включая значения боевой силы в связанном списке – MKL

ответ

1

Вы должны связать значение «боеспособности» с чудовищем, но вы не сделаете это в вашей программе. Значения, относящиеся друг к другу, должны храниться вместе. Как насчет класса для представления монстра:

class Monster { 
    private String name; 
    private int fightingPower; 

    public Monster(String name, int fightingPower) { 
     this.name = name; 
     this.fightingPower = fightingPower; 
    } 

    public String getName() { 
     return name; 
    } 

    public int getFightingPower() { 
     return fightingPower; 
    } 
} 

Тогда вы могли бы сделать список Monster с так:

LinkedList<Monster> monsterList = new LinkedList <Monster>(); 

monsterList.add(new Monster("Screaming-Monster \"Bob\"", 1)); 
monsterList.add(new Monster("Fighting-Monster \"Tom\"", 6)); 
monsterList.add(new Monster("Fighting-Monster \"Dave\"", 7)); 
monsterList.add(new Monster("Scream-Fight-Monster \"Steve\"", 3)); 

, и вы можете напечатать их, как это:

for(int i = 0; i < monsterList.size(); i++){ 
    Monster monster = monsterList.get(i); 
    System.out.println(monster.getName() + " with fightingpower " + monster.getFightingPower()); 
} 
+0

Большое спасибо. Я забыл, что вы можете создать связанный список с типом объекта! – MKL

0

Попробуйте создать класс монстров, который выглядит так:

private String type; 
private String name; 
private int fightingpower; 

monster(String type, String name, int fightingpower) { 
    this.type = type; 
    this.name = name; 
    this.fightingpower = fightingpower; 
} 

public String getStats() { 
    String stats = this.type + " \"" + this.name + "\" with fightingpower " + this.fightingpower; 
    return stats; 
} 

то в вашем классе с вашим LinkedList сделать:

LinkedList <monster> monsterList = new LinkedList <>(); 

monsterList.add(new monster("Screaming-Monster", "Bob", 1)) 
//Repeat for every monster you want to have 

for (int i = 0; i < monsterList.size(); i++) { 
    System.out.println(monsterList.get(i).getStats()); 
} 
0

В дополнении к @ тонкому ответу Мэтты, а также название вашего вопроса «LinkedList итерации», я хотел бы указать на то, что вы должны использовать для каждого-цикла для перебора связанного списка:

for (Monster monster : monsterList) { 
    System.out.println(monster.getName() + " with fightingpower " 
     + monster.getFightingPower()); 
} 

Использование для каждого-цикл представляет собой О (п), в то время как с использованием индекса и get() является O (1/2 N * N)