Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 驱动程序类执行什么操作(数组)_Java_Arrays - Fatal编程技术网

Java 驱动程序类执行什么操作(数组)

Java 驱动程序类执行什么操作(数组),java,arrays,Java,Arrays,我正在尝试使用对象数组列表创建驱动程序类,它要求我: 阅读用户提供的书名 从用户处阅读图书ISBN 阅读用户提供的图书库存量 程序应继续从用户处读取图书信息,直到用户针对所有字段的所有条目为空或为零 程序将有效的图书对象存储到ArrayList中(仅有效对象) 然后,您的程序将按与输入图书相反的顺序打印用户输入的所有“有效”图书的列表 当用户输入信息时,程序应提供反馈,例如报告某个项目已添加到ArrayList,或报告发现的任何错误 带有无效条目的书籍未添加到ArrayList,因此打印Arr

我正在尝试使用对象数组列表创建驱动程序类,它要求我:

  • 阅读用户提供的书名
  • 从用户处阅读图书ISBN
  • 阅读用户提供的图书库存量
  • 程序应继续从用户处读取图书信息,直到用户针对所有字段的所有条目为空或为零
  • 程序将有效的图书对象存储到ArrayList中(仅有效对象)
  • 然后,您的程序将按与输入图书相反的顺序打印用户输入的所有“有效”图书的列表
  • 当用户输入信息时,程序应提供反馈,例如报告某个项目已添加到ArrayList,或报告发现的任何错误
  • 带有无效条目的书籍未添加到ArrayList,因此打印ArrayList时不会打印这些书籍
这是我目前为我的司机编写的代码:(我在这方面有点生疏) 编辑:给出答案

这是我现在得到的

import java.io.*;
导入java.util.*;
公共类书店2{
公共静态void main(字符串arg[])引发异常{
扫描仪sc=新的扫描仪(System.in);
int-isbn=0;
整数数量=0;
字符串标题=”;
一本书;
List bookList=new ArrayList();//此处
while(true){
系统输出打印(“输入标题:”);
title=sc.nextLine();
sc=新扫描仪(系统英寸);
System.out.println();
系统输出打印(“输入isbn:”);
isbn=sc.nextInt();
sc=新扫描仪(系统英寸);
System.out.println();
系统输出打印(“输入数量:”);
数量=sc.nextInt();
sc=新扫描仪(系统英寸);
sc=新扫描仪(系统英寸);
System.out.println();
//在这里编写验证代码
//根据您的要求更改条件。
如果(isbn!=0&&quantity!=0&&title!=null&&title!=“”)
{
一本书=新书(书名、isbn、数量);
bookList.add(oneBook);//在main中创建一个列表
System.out.println(“添加到列表中的书”);
}
其他的
{
System.out.println(“未添加的书”);
打破
}
}
对于(int i=bookList.size()-1;i>=0;i--){
System.out.println(bookList.get(i));
}   
}//主方法
}//类
首先使用:while(true)循环进行迭代,直到用户为所有字段输入0为止

while(true)
{
   // Scanner Code i.e. read input from the user.
   if(//check all the inputs)
   {
       //create a new book and insert it into array list
   }
   else
   {
     // If input is 0, break from the loop
   }
}
其次,永远不要在bean类中执行验证。创建一个单独的类或方法来验证输入。输入验证之后,才创建新对象

希望这对你有帮助

正确的代码:

     sc = new Scanner(System.in);
    while(true){
    System.out.print("Enter title: ");
    title = sc.nextLine( );
           System.out.println();
    System.out.print("Enter isbn: ");
    isbn = sc.nextInt( );
    System.out.println();
    System.out.print("Enter quantity: ");
    quantity = sc.nextInt( );
    System.out.println();   

 // WRITE YOUR VALIDATION CODE HERE 
 // Change condition according to your requirements.
    if(isbn !=0 && quantity != 0 && title != null && title != "")
    {
        oneBook = new Book(title, isbn, quantity);
    bookList.add(oneBook); //create a list in main
    System.out.println("Book added in the list."); 
    }
    else 
    {
        System.out.println("Book not added");
         break;
       }

}
  for(int i = bookList.size()-1; i >= 0; i--){
    System.out.println(bookList.get(i));
    }
您发布了:

while(title != null || title.equals("0") || isbn != null || isbn != 0 || quantity
isbn是int类型,即原始类型,我们如何将其与null进行比较。 数量也是int类型。
int(即基元类型)的默认值为0。而且,基元类型永远不能与null进行比较

由于代码太混乱,下面是一个完整的任务解决方案:

Bookstore.java

public class Bookstore {
    static final Scanner in = new Scanner(System.in);
    static List<Book> books = new ArrayList<>();

    public static void main(String arg[]) throws Exception {
        while (true) {
            // read book information
            Book book = new Book();
            System.out.print("Enter title: ");
            book.title = in.nextLine();
            System.out.println();

            System.out.print("Enter ISBN: ");
            book.isbn = readInt();
            System.out.println();

            System.out.print("Enter quantity: ");
            book.quantity = readInt();
            System.out.println();

            // exit condition: "blank book" entered
            if (book.title.isEmpty() && book.isbn == 0 && book.quantity == 0) {
                System.out.println("Goodbye!");
                break;
            }

            //validate and add book
            try {
                validateBook(book);
                books.add(book);
                System.out.println("Book successfully added to the list.");
            } catch (IllegalStateException ex) {
                System.err.println("Book is not valid: " + ex.getMessage());
                continue;
            }

            // print book list
            for (int i = books.size() - 1; i >= 0; i--) {
                System.out.println(books.get(i));
                System.out.println();
            }
        }
    }

    static int readInt() {
        while (true) {
            String input = in.nextLine();
            if(input.isEmpty()) {
                return 0;
            }
            try {
                return Integer.parseInt(input);
            } catch (NumberFormatException ex) {
                System.err.println("Expected a valid integer: " + input);
            }
        }
    }

    static void validateBook(Book book) {
        if (book.title == null || book.title.isEmpty()) {
            throw new IllegalStateException("Book title must not be blank.");
        }
        if (book.isbn < 1000 || book.isbn > 10000) {
            throw new IllegalStateException("Book ISBN must be between 1000 and 10000.");
        }
        if (book.quantity < 0) {
            throw new IllegalStateException("Book quantity must be positive.");
        }
    }
}
public class Book {
    public String title;
    public int isbn;
    public int quantity;

    @Override
    public String toString() {
        return String.join("\n",
                "Title: " + title,
                "ISBN: " + isbn,
                "Quantity: " + quantity
        );
    }
}

列表在哪里?你到底有什么问题?我无法从这个问题中找到答案。我正在使用book对象数组创建一个驱动程序类,如上所述,我需要遵循要求。我确切的问题是:如何使用声明的数组创建一个遵循上面说明的驱动程序类?我已经列出了我的book类和exception类。。我只需要driver类,但我不知道下一步该放什么我忘了arraylist还是什么?我只是按照说明书上说的去做;更改
isbn!=空
isbn!=0
,因为对于简单循环指令,基本变量不能为
null
+1-无限循环(
while(true)
)具有
中断
s、
用于
-i、反向
用于
-i和
用于
-每个循环都涵盖了大多数重复问题,并且易于阅读,理解和改变。我可能会考虑你的选择。根据我的密码?谢谢!我用你的代码编辑了它,但它没有使用我的book类和底部的exception类,它看起来像..我试图让它们三个一起工作。另外,在驱动程序类中添加inputmismatchexception是必需的还是book类会解决这个问题?当输入正确并且您正在创建一个新的book类对象时,会使用book类。并且,当用户输入无效值时引发异常。不确定是否将其放入many
sc=new Scanner(System.in)行,但是:虽然我确实想使用你的书店建议,但我必须将它与我的书和我拥有的异常类相匹配:(而且它不会从我的另一个类中拾取异常。)