0

这个问题,我看了几百万次代码,可能我只是看不到简单的答案,但是为什么在作者姓名和作者姓氏的时候,系统打印出来是这样的:

Enter author Name: Enter author Surname: 

它应该是这样的......

Enter author Name: 
Enter author Surname:

如果我在系统中输入信息,只记得作者的名字,我不能输入姓氏的信息。

import java.util.Scanner;

public class BookTest {

    public static void main(String[] args) {    

        Scanner scan = new Scanner (System.in);

        Book bookIn = new Book();

        System.out.print("Enter book title: ");
        bookIn.setTitleBook(scan.nextLine());



        System.out.print("Enter author Name: ");
        bookIn.setFirstName(scan.nextLine());

        System.out.print("Enter author Surname: ");
        bookIn.setSecondName(scan.nextLine());

        System.out.print("Enter author Nationality: ");
        bookIn.setNationality(scan.nextLine());




        System.out.print("Enter book price: ");
        bookIn.setPriceBook(scan.nextDouble());

        System.out.print("Enter book ISBN: ");
        bookIn.setIsbn(scan.nextInt());




        System.out.println("Title: " +bookIn.getTitleBook());
        System.out.println("Author: "+ bookIn.getFirstName()+ " " + bookIn.getSecondName());
        System.out.println("Price: "+bookIn.getPriceBook());
        System.out.println("ISNB Number: "+bookIn.getIsbn());
        System.out.println("Aurhor Nationality: " + bookIn.getNationality());



    }
}

书类

public class Book {

    private double priceBook;
    private int isbn;
    private String titleBook;
    private String firstName;
    private String secondName;
    private String nationality;


    public void setTitleBook(String titleBook){
        this.titleBook = titleBook;
    }
    public String getTitleBook(){
        return titleBook;
    }


    public void setPriceBook(double priceBook) {
        this.priceBook = priceBook;
    }
    public double getPriceBook() {
        return priceBook;
    }


    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }
    public int getIsbn() {
        return isbn;
    }



    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getFirstName() {
        return firstName;
    }




    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }
    public String getSecondName() {
        return secondName;
    }


    public void setNationality(String nationality) {
        this.nationality = nationality;
    }
    public String getNationality() {
        return nationality;
    }



}
4

1 回答 1

1

读取 ISBN 后将扫描仪移至下一行。使用Scanner.nextInt输入时,仅读取数字而不是按 Enter 时创建的换行符。调用Scanner.nextLineafterScanner.nextInt读取换行符并清除缓冲区。

import java.util.Scanner;

public class BookTest {

    public static void main(String[] args) {    

        Scanner scan = new Scanner (System.in);

        Book title = new Book();
        Book price = new Book();
        Book isbn = new Book();
        Book fName = new Book();
        Book sName = new Book();
        Book nation = new Book();

        System.out.print("Enter book title: ");
        title.setTitleBook(scan.nextLine());

        System.out.print("Enter book price: ");
        price.setPriceBook(scan.nextDouble());

        System.out.print("Enter book ISBN: ");
        isbn.setIsbn(scan.nextInt());

        scan.nextLine(); //NOTICE CHANGE HERE
        //System.out.println(); THIS WAS REMOVED


        System.out.print("Enter author Name: ");
        fName.setFirstName(scan.nextLine());

        System.out.print("Enter author Surname: ");
        sName.setSecondName(scan.nextLine());

        System.out.print("Enter author Nationality: ");
        nation.setNationality(scan.nextLine());


    System.out.println("Title: " +title.getTitleBook());
    System.out.println("Price: "+price.getPriceBook());
    System.out.println("ISNB Number: "+isbn.getIsbn());

    System.out.println("Author: "+ fName.getFirstName() + sName.getSecondName());
    System.out.println("Aurhor Nationality: " + nation.getNationality());



    }
}
于 2013-02-26T10:31:44.773 回答