【问题标题】:How to iterate through a arraylist and print the index of the containing word?如何遍历数组列表并打印包含单词的索引?
【发布时间】:2020-02-29 03:07:33
【问题描述】:

我想知道如何遍历数组列表并打印出所有包含用户放入扫描仪中的数字的索引。如果数字不在扫描仪中,那么它将打印出不在列表中的值。我的程序中有两个课程。

下面是我的娱乐课:

         public class Real_Entertainment 
      {
            String BookName; 
            String Author; 
            double Rating; 
            int Purchases;


public Real_Entertainment(String BookName, String Author, double Rating, int Purchases)
{
    this.BookName = BookName;
    this.Author = Author;
    this.Rating = Rating;
    this.Purchases = Purchases;
}
public void setBookName(String BookName)
{
    this.BookName = BookName;
}
public void setAuthor (String Author )
{
    this.Author = Author;
}
public void setRating (double Rating)
{
    this.Rating = Rating;
}
public void setPurchased (int Purchases)
{
    this.Purchases = Purchases;
}


    }

下面是包含arraylist的主类:

    import java.util.Scanner;
    import java.util.ArrayList;
    public class Real_Main 
    {




        public static void main(String[] args) 
        {


    ArrayList<Real_Entertainment> print = new ArrayList<Real_Entertainment>();
    Real_Entertainment Book1 = new Real_Entertainment("The Nickel Boys ", "Colson Whitehead", 4.3, 500000);
    Real_Entertainment Book2 = new Real_Entertainment("Olive, Again", "Elizabeth Strout", 6, 321000);
    Real_Entertainment Book3 = new Real_Entertainment("Gingerbread", "Helen Oyeyemi", 2, 681000);
    Real_Entertainment Book4 = new Real_Entertainment("On Earth We're Briefly Gorgeous", "Ocean Vuong", 2, 421000);

    print.add(Book1);
    print.add(Book2);
    print.add(Book3);
    print.add(Book4);



 findPrimitiveValue(print);


}

public static void findPrimitiveValue(ArrayList<Real_Entertainment> print)
{
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a Numeric Value:" );
        int input = scanner.nextInt();
        boolean foundInfo = false;
        for(int i = 0; i < print.size(); i++)
        {
            if(print.get(i).() == input || print.get(i).() == input)
            {
                System.out.println("This is the information found: " );
                System.out.println()
            }
        }

}

   }

我尝试将购买的值设置为用户输入的值,但一直出错。

【问题讨论】:

  • “我一直收到错误消息。” - 你能把错误包括进来吗?
  • 当然,线程“main”java.lang.Error 中的异常:未解决的编译问题:方法 getPurchases() 未定义 Real_Entertainment 类型的方法 getPurchases() 未定义类型 Real_Entertainment跨度>
  • 嗯,那是不言自明的。你没有方法getPurchases()...
  • 我明白,但是我会用什么来检查它是否匹配,我有一个名为 getPurchases() 的方法
  • if(print.get(i).getPurchases() == input) 虽然我必须说print 是一个可怕的对象列表名称...考虑将其命名为realEntertainments。使用有意义的变量名。

标签: java arraylist


【解决方案1】:

我重构了你的代码

  • 根据约定的类、字段和参数名称,
  • 将您的 Book 类转换为 Java Bean,该 Bean 还有一个 toString() 方法以便于打印,
  • 一般使用不那么神秘的名称,
  • 使用 Java 流更好地处理集合。

我还添加了一个示例,例如搜索一本书的购买数量完全匹配。我还添加了另外一本购买次数相同的书,因此我们可以看到多个搜索结果。

数据类:

package de.scrum_master.stackoverflow.q60461642;

public class Book {
  private String name;
  private String author;
  private double rating;
  private int purchases;

  public Book(String name, String author, double rating, int purchases) {
    this.name = name;
    this.author = author;
    this.rating = rating;
    this.purchases = purchases;
  }

  @Override
  public String toString() {
    return "Book{" +
      "name='" + name + '\'' +
      ", author='" + author + '\'' +
      ", rating=" + rating +
      ", purchases=" + purchases +
      '}';
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getAuthor() {
    return author;
  }

  public void setAuthor(String author) {
    this.author = author;
  }

  public double getRating() {
    return rating;
  }

  public void setRating(double rating) {
    this.rating = rating;
  }

  public int getPurchases() {
    return purchases;
  }

  public void setPurchases(int purchases) {
    this.purchases = purchases;
  }
}

驱动程序应用:

package de.scrum_master.stackoverflow.q60461642;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Application {
  private static List<Book> books = Arrays.asList(
    new Book("The Nickel Boys", "Colson Whitehead", 4.3, 500000),
    new Book("Olive, Again", "Elizabeth Strout", 6, 321000),
    new Book("Gingerbread", "Helen Oyeyemi", 2, 681000),
    new Book("On Earth We're Briefly Gorgeous", "Ocean Vuong", 2, 421000),
    new Book("Perfume", "Patrick Süskind", 6, 500000)
  );

  public static void main(String[] args) {
    printBooks();
    findBooksByNumberOfPurchases();
  }

  private static void printBooks() {
    System.out.println("Books list:");
    books.stream().forEach(System.out::println);
    System.out.println("\n");
  }

  private static void findBooksByNumberOfPurchases() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the number of purchases to search for:");
    int input = scanner.nextInt();
    books.stream()
      .filter(book -> book.getPurchases() == input)
      .forEach(System.out::println);
  }
}

控制台日志:

Books list:
Book{name='The Nickel Boys', author='Colson Whitehead', rating=4.3, purchases=500000}
Book{name='Olive, Again', author='Elizabeth Strout', rating=6.0, purchases=321000}
Book{name='Gingerbread', author='Helen Oyeyemi', rating=2.0, purchases=681000}
Book{name='On Earth We're Briefly Gorgeous', author='Ocean Vuong', rating=2.0, purchases=421000}
Book{name='Perfume', author='Patrick Süskind', rating=6.0, purchases=500000}


Enter the number of purchases to search for:
500000
Book{name='The Nickel Boys', author='Colson Whitehead', rating=4.3, purchases=500000}
Book{name='Perfume', author='Patrick Süskind', rating=6.0, purchases=500000}

【讨论】:

  • 非常感谢!
  • 能否解释一下package package de.scrum_master.stackoverflow.q60461642的使用;
  • 只是我私测项目中选择的包名。添加新示例代码时,我通常使用自己的域名加上stackoverflow加上问题编号,仅此而已。您可以在自己的项目中使用您喜欢的任何包名称。我只是不喜欢用匿名包名发布的问题或答案。
  • 非常感谢您抽出宝贵时间帮助我。我已将问题标记为已回答我只是在想我是否可以为作者做同样的事情。
  • 对答案、问题甚至评论表示感谢的方式是upvote它。但为此,您首先需要 15 个声望点。无论如何,谢谢你。 ?
猜你喜欢
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多