Java 如何遍历arraylist并打印包含单词的索引?

Java 如何遍历arraylist并打印包含单词的索引?,java,arraylist,Java,Arraylist,我想知道如何遍历arraylist并打印出包含用户输入到扫描仪中的数字的所有索引。如果数字不在扫描仪中,则它将打印输出值不在列表中。我的课程有两门课 下面是我的娱乐课: public class Real_Entertainment { String BookName; String Author; double Rating; int Purchases;

我想知道如何遍历arraylist并打印出包含用户输入到扫描仪中的数字的所有索引。如果数字不在扫描仪中,则它将打印输出值不在列表中。我的课程有两门课

下面是我的娱乐课:

         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()
            }
        }

}

   }
import java.util.Scanner;
导入java.util.ArrayList;
公共类Real_Main
{
公共静态void main(字符串[]args)
{
ArrayList print=新的ArrayList();
Real_Entertainment Book1=新Real_Entertainment(“镍币男孩”,“科尔森怀特黑德”,43500000);
Real_Entertainment Book2=新Real_Entertainment(“又是Olive”,“Elizabeth Strout”,6321000);
Real_Entertainment Book3=新Real_Entertainment(“姜饼”、“海伦·奥耶米”,2681000);
Real_Entertainment Book4=新的Real_Entertainment(“在地球上,我们只是短暂的美丽”,“Ocean Vuong”,2421000);
打印。添加(第1册);
打印.添加(第2册);
打印.添加(第3册);
打印.添加(第4册);
findPrimitiveValue(打印版);
}
公共静态void findPrimitiveValue(ArrayList打印)
{
扫描仪=新的扫描仪(System.in);
System.out.println(“输入一个数值:”);
int input=scanner.nextInt();
布尔foundInfo=false;
对于(int i=0;i

我试图将购买的值设置为用户输入的值,但我一直收到一个错误

我为您重构了代码

  • 类、字段和参数名称符合约定
  • 将您的
    书籍
    类转换为一个Java Bean,它还具有一个
    toString()
    方法,便于打印
  • 通常使用不太神秘的名称
  • 使用Java流进行更好的集合处理
我还添加了一个示例,说明如何搜索一本书的购买数量的精确匹配。我还增加了一本购买数量相同的书,这样我们就可以看到多个搜索结果

数据类:

package de.scrum_master.stackoverflow.q60461642;
公共课堂用书{
私有字符串名称;
私有字符串作者;
私人双重评级;
私人采购;
公共图书(字符串名称、字符串作者、双重评级、整数购买){
this.name=名称;
this.author=作者;
这个。评级=评级;
这是购买=购买;
}
@凌驾
公共字符串toString(){
返回“Book{”+
“name=”+name+“\”+
“,author='”+author+'\''+
“,额定值=”+额定值+
“,采购=”+采购+
'}';
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getAuthor(){
返回作者;
}
公共void setAuthor(字符串编写器){
this.author=作者;
}
公共双重评级(){
回报率;
}
公共评级(双重评级){
这个。评级=评级;
}
public int getPurchases(){
退货;
}
公共采购(整数采购){
这是购买=购买;
}
}
驱动程序应用程序:

package de.scrum_master.stackoverflow.q60461642;
导入java.util.array;
导入java.util.List;
导入java.util.Scanner;
公共类应用程序{
私有静态列表书=Arrays.asList(
新书(《镍币男孩》,《科尔森·怀特黑德》,43500000页),
新书(《又是奥利弗》,《伊丽莎白·斯特劳特》,《6321000》),
新书(“姜饼”、“海伦·奥耶米”,2681000),
新书(《在地球上我们短暂的美丽》,《海洋之王》,24211000),
新书(“香水”,“帕特里克·苏斯金”,65000)
);
公共静态void main(字符串[]args){
印刷书籍();
findBooksByNumberOfPurchases();
}
私有静态void printBooks(){
System.out.println(“图书列表”);
books.stream().forEach(System.out::println);
System.out.println(“\n”);
}
私有静态void findBooksByNumberOfPurchases(){
扫描仪=新的扫描仪(System.in);
System.out.println(“输入要搜索的购买数量:”);
int input=scanner.nextInt();
books.stream()
.filter(book->book.getPurchases()==输入)
.forEach(System.out::println);
}
}
控制台日志:

书籍列表:
书籍{name='The Nickel Boys',作者='Colson Whitehead',评级=4.3,购买量=500000}
书籍{name='Olive,再次,'作者='Elizabeth Strout',评级=6.0,购买量=321000}
书籍{name='Gingerbread',author='Helen Oyeymi',评级=2.0,购买量=681000}
书籍{name='On Earth We's Briefly Family',作者='Ocean Vuong',评级=2.0,购买量=421000}
书籍{name='香水',作者='Patrick Süskind',评级=6.0,购买量=500000}
输入要搜索的购买数量:
500000
书籍{name='The Nickel Boys',作者='Colson Whitehead',评级=4.3,购买量=500000}
书籍{name='香水',作者='Patrick Süskind',评级=6.0,购买量=500000}

“我一直收到一个错误。”-你能把错误包括进来吗?当然,线程“main”java.lang中有异常。错误:未解决的编译问题:方法getPurchases()对于类型Real\u Entertainment是未定义的。方法getPurchases()对于类型Real\u Entertainment是未定义的。你没有方法
getPurchases()
…我知道,但是我会用什么来检查它是否匹配,我有一个方法叫做getPurchases()
if(print.get(I).getPurchases()==input)
,尽管我必须说
print
对于对象列表来说是个糟糕的名字。。。考虑命名它