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类。并且,当用户输入无效值时引发异常。不确定是否将其放入manysc=new Scanner(System.in)代码>行,但是:虽然我确实想使用你的书店建议,但我必须将它与我的书和我拥有的异常类相匹配:(而且它不会从我的另一个类中拾取异常。)