java - 在 Arraylist 中搜索时遇到问题

标签 java arraylist indexing

我正在为学校做一个项目,要求我做一些事情,比如在名人堂上添加/删除/编辑/搜索乐队,用户可以用它添加乐队。我在获取数组列表 hallOfFame 中乐队的索引时遇到问题。有人可以推荐任何解决方案吗?

这是我的HallofFame类(class):

import java.util.*;
public class HallofFame
{
    public static ArrayList<Band> hallOfFame = new ArrayList<Band>();
    public static Scanner scan = new Scanner(System.in);
    public static void main(String[]args){
        boolean running = true;
        while(running == true){
            System.out.println("What would you like to do?");
            System.out.println("");
            System.out.println("1. Add");
            System.out.println("2. Remove");
            System.out.println("3. Edit");
            System.out.println("4. Clear");
            System.out.println("5. Search");
            System.out.println("6. Quit");
            System.out.println("");
            String choice = scan.nextLine();
            if(choice.equals ("1")){
                add();
            }
            else if(choice.equals ("2")){
                remove();
            }
            else if(choice.equals ("3")){
                edit();
            }
            else if(choice.equals ("4")){
                clear();
            }
            else if(choice.equals ("5")){
                search();
            }
            else if(choice.equals ("6")){
                running = false;
            }
        }
    }

    public static void add(){
        Scanner booblean = new Scanner(System.in);
        System.out.println("What is the name of the band you would like to add?");
        String name = scan.nextLine();
        System.out.println("What kind of genre is this band?");
        String genre = scan.nextLine();
        System.out.println("How many members are in the band?");
        int numMem = scan.nextInt();
        System.out.println("How many songs does this band have?");
        int numSongs = scan.nextInt();
        System.out.println("How many albums does this band have?");
        int numAlbs = scan.nextInt();
        System.out.println("Is this band currently active?");
        String yesno = booblean.nextLine();
        boolean isActive = false;
        if(yesno.equalsIgnoreCase ("yes")){
            isActive = true;
        }
        Band b1 = new Band(name, genre, numMem, numSongs, numAlbs, isActive);
        hallOfFame.add(b1);
        System.out.println("");
        System.out.println("The band " + name + " has been added to the database.");
        System.out.println("");
    }

    public static void remove(){

    }

    public static void edit(){
        System.out.println("What band info do you want to edit?");
        String editband = scan.nextLine();
    }

    public static void search(){
        System.out.println("What band are you looking for?");
        String searchband = scan.nextLine();
    }

    public static void clear(){
        hallOfFame.clear();
    }
}

这是 Band 类的代码:

public class Band
{
    //1.Class Variables    
    private String nameOfBand;
    private String[] members;
    private String genre;
    private int numberOfMembers;
    private int numberOfSongs;
    private int numberOfAlbums;
    private boolean isActive;

    //2. Constructors
    public Band(String name, String genre, int numMem, int numSongs, int numAlbs, boolean isActive)
    {

    }

    //3. Methods
    //setters
    public void setName(String newName)
    {
        nameOfBand = newName;
    }

    public void setGenre(String s)
    {
        genre = s;
    }

    public void setNumberOfMembers(int num)
    {
        numberOfMembers = num;
    }

    public void setNumberOfSongs(int numsongs){
        numberOfSongs = numsongs;
    }

    public void setNumberOfAlbums(int numalbs){
        numberOfAlbums = numalbs;
    }

    public void setIsActive(boolean isactive){
        isActive = isactive;
    }

    public String getName()
    {
        return nameOfBand;
    }

    public String getGenre(){
        return genre;
    }

    public int getNumberofMembers(){
        return numberOfMembers;
    }

    public int getNumberofSongs(){
        return numberOfSongs;
    }

    public int getNumberofAlbums(){
        return numberOfAlbums;
    }

    public boolean getIsActive(){
        return isActive;
    }

    @Override public String toString()
    {
        String output = "";
        output += "Name: " + nameOfBand + "\n";
        output += "Genre: " + genre + "\n";
        output += "Number of members: " + numberOfMembers + "\n";
        output += "Number of songs: " + numberOfSongs + "\n";
        output += "Number of albums: " + numberOfAlbums + "\n";
        output += "Is this band active: " + isActive + "\n";

        return output;
    }
}

最佳答案

您可以执行以下代码来在ArrayList中搜索具有名称的Band。

public static void search(){

 System.out.println("What band are you looking for?");
 String searchband = scan.nextLine();

  boolean bandFooud = false;

  for(Band band : hallOfFame)
    {
        if(band.getName().equals(searchband))
        {
            bandFooud = true;// Set the flag to true to indicate the band is found.
            //Make your code to display the band information here.

            break; 
        }
    }

    if(!bandFooud){
        System.out.printf("Band %s is not found.");
    }
}

关于java - 在 Arraylist 中搜索时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19919830/

相关文章:

java - 向多个表添加数据行时实现 AsyncTask

java - 如何知道一个类的Dynamic类型?

java - 使用类将 arraylist 添加到数组适配器

java - 如何在 java 中创建一个 2D ArrayList?

日期范围查询的 SQL 索引

java - 如何以特定格式显示txt文件中的数据

java - Dagger 2 - 两个提供相同接口(interface)的方法

java - HTTP 状态 500 - org.apache.jasper.JasperException : Unable to compile class for JSP

java - 我将如何使用 ArrayList 删除用户在 Java 中指定的索引之前(而不是之后!)的索引?

sql-server - 聚集索引与覆盖索引