【问题标题】:Having trouble with CharSequenceCharSequence 遇到问题
【发布时间】:2017-01-25 04:56:52
【问题描述】:

我两周前刚开始学习如何编码,但我似乎对使用 CharSequence 的想法感到困惑。

我正在编写基于电视节目《权力的游戏》的简单程序,它可以让我使用 ArrayList 打印出姓名、他们的忠诚度以及他们是活着还是已故。

这是我的角色类:

import java.util.ArrayList;

public class Characters {

/* Fields */
private String name;
private String allegiance;
private String status;
private int seasonSeen;


/* Constructor */
public Characters(String name, String allegiance, String status, int seasonSeen) {
    this.name = name;
    this.allegiance = allegiance;
    this.status = status;
    this.seasonSeen = seasonSeen;
}

/* Methods */

public String getName() {
    return name;
}

public String getallegiance() {
    return allegiance;
}

public String getStatus() {
    return status;
}

public int getseasonSeen() {
    return seasonSeen;
}

}

这是我的测试课

import java.util.ArrayList;

public class TestGoTCharacters {

public static void main(String[] args) {


// create an arraylist called character
ArrayList<Characters> character = new ArrayList<Characters>();

    // character paramaters(name, allegiance, status, season appearance) into the arraylist
    character.add(new Characters("Jon Snow", "House Stark, The Nights Watch", "Alive", 1));
    character.add(new Characters("Neddard Stark", "House Stark", "Deceased", 1));
    character.add(new Characters("Arya Stark", "House Stark, Faceless Men", "Alive", 1));
    character.add(new Characters("Catelyn Stark", "House Stark", "Deceased", 1));
    character.add(new Characters("Sansa Stark", "House Stark", "Alive", 1));
    character.add(new Characters("Bran Stark", "House Stark", "Alive", 1));
    character.add(new Characters("Rickon Stark", "House Stark", "Deceased", 1));
    character.add(new Characters("Cersei Lannister","House Lannister, House Baratheon", "Alive", 1));
    character.add(new Characters("Jamie Lannister", "House Lannister, Kingsguard", "Alive", 1));
    character.add(new Characters("Tyrion Lannister", "House Lannister, House Targaryen", "Alive", 1));
    character.add(new Characters("Tywin Lannister", "House Lannister", "Deceased", 1));
    character.add(new Characters("Robert Baratheon", "House Baratheon, House Baratheon of Kings Landing", "Deceased", 1));
    character.add(new Characters("Stannis Baratheon", "House Baratheon, House Baratheon of Dragonstone", "Deceased", 2));
    character.add(new Characters("Renly Baratheon", "House Baratheon", "Deceased", 1 ));
    character.add(new Characters("Melissandre", "The lord of light", "Alive", 2));
    character.add(new Characters("Margaery Tyrell", "House Tyrell, House Baratheon, House Baratheon of Kings Landing", "Deceased", 2));
    character.add(new Characters("Sandor 'The Hound' Clegane", "House Baratheon of Kings Landing, Brotherhood without Banners", "Alive", 1 ));
    character.add(new Characters("Joffrey Baratheon", "House Baratheon of Kings Landing, House Lannister", "Deceased", 1));
    character.add(new Characters("Gregor 'The Mountain' Clegane", "House Lannister", "Alive", 1));
    character.add(new Characters("Khal Drogo", "Dothraki", "Deceased", 1));
    character.add(new Characters("Benjen Stark", "House Stark, The Nights Watch", "Alive", 1));
    character.add(new Characters("Ramsay Bolton", "House Bolton", "Deceased", 3));
    character.add(new Characters("Daenarys Targayen", "House Targaryen", "Alive", 1));
    character.add(new Characters("Viserys Targaryen", "House Targaryen", "Deceased", 1));
    character.add(new Characters("Rhaegar Targaryen", "House Targaryen", "Deceased", 7));
    character.add(new Characters("Petyr Baelish", "House Baelish", "Alive", 1));
    character.add(new Characters("Robb Stark", "House Stark", "Deceased", 1));
    character.add(new Characters("Theon Greyjoy", "House Targaryen, House Stark, House Greyjoy", "Alive", 1));
    character.add(new Characters("Yara Greyjoy", "House Greyjoy", "Alive", 2));



    /* method that reads out names in the array list */
    /*
    int count = 1;
    System.out.println("Some of the characters in Game of Thrones, are: ");
    for (int i = 0; i < character.size(); i++) {
        System.out.println(count + ". " + character.get(i).getName()); 
        count = count + 1;
    }
    */


    /* method that finds house allegiances */

    System.out.println("\n"); // create a line space
    System.out.println("The following characters are loyal to House Stark: ");
    CharSequence HouseStark = "House Stark";  // if Allegiance contains House Stark then, print the name
    for (int i = 0; i < character.size(); i++) {
        // if (characer.get(i_.getallegiance() == "House Stark") 
        if (character.get(i).getallegiance() == HouseStark)// compares if allegiance paramters is true (equals house stark)
            System.out.println(character.get(i).getName());
    }



    /* method that finds deceased */

    /* method that finds characters seen in season 1 */

    /* method that finds characters seen other than season 1 */

}
}

这就是它的内容,但我似乎注意到输出中没有像“Jon Snow”这样的字符,即使我在参数“House Stark,The Nights Watch”中提到了

The following characters are loyal to House Stark: 
Neddard Stark
Catelyn Stark
Sansa Stark
Bran Stark
Rickon Stark
Robb Stark

【问题讨论】:

  • 我想知道这个new Characters("Jon Snow", "House Stark, The Nights Watch", "Alive", 1) 会变成什么?当只有/* Constructor */ public Characters(String name, String allegiance, String status, int seasonSeen)
  • 还有你为什么还要使用CharSequence ?stackoverflow.com/questions/1049228/…

标签: java arraylist charsequence


【解决方案1】:

您在“Jon Snow”的忠诚度中有一个逗号(具有多个 一个 值,因此它们不相等)。 allegianceString,所以你可以使用 String.contains like

if (character.get(i).getallegiance().contains(HouseStark))

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 2021-08-09
    • 2017-05-02
    • 2021-02-01
    • 2012-10-31
    • 2019-07-26
    • 2018-01-07
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多