更改我的程序以使用ArrayList

时间:2018-02-04 00:42:20

标签: java

所以我得到了一个项目,我必须在那里验证ISBN-10和ISBN-13号码。我的问题是我想根据用户输入的内容使用ArrayList(用户将所需数量添加到ArrayList中)。这是我的代码(没有ArrayList)。如何修改此项以便用户可以根据需要添加多少个ISBN号?

 public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String isbn;
        //Get the ISBN
        System.out.print("Enter an ISBN number ");
        isbn = input.nextLine();
        input.close();

        //Strip out the spaces/System.out.println("Press 1 to enter a list of ISBN numbers to verify. ");System.out.println("Press 1 to enter a list of ISBN numbers to verify. ");dashes by replacing with empty character.
        isbn = isbn.replaceAll("( |-)", "");

        //Check depending on length. 
        boolean isValid = false;
        if(isbn.length()== 10){
            isValid = CheckISBN10(isbn);
        }else if (isbn.length()== 13){
            isValid = CheckISBN13(isbn);

        }else{
            isValid = false;

        }

        //Print check Status
        if(isValid){
            System.out.println(isbn + " IS a valid ISBN");
        }else{
            System.out.println(isbn + " IS NOT a valid ISBN");
        }
    }

    //Checking ISBN-10 numbers are valid
    //
    private static boolean CheckISBN10(String isbn){
        int sum = 0; 
        String dStr;
        for (int d = 0; d < 10; d++){
            dStr = isbn.substring(d, d + 1);
            if (d < 9 || dStr != "X"){
                sum += Integer.parseInt(dStr) * (10-d);
            }else {
                sum += 10;
            }
        }
        return (sum %11 == 10);
    }

    private static boolean CheckISBN13(String isbn){
        int sum = 0; 
        int dVal;
        for (int d = 0; d < 13; d++){
            dVal = Integer.parseInt(isbn.substring(d, d + 1));
            if (d % 2 == 0){
                sum += dVal * 1;
            }else {
                sum += dVal * 3;
            }
        }
        return (sum % 10 == 0);

    }
}

2 个答案:

答案 0 :(得分:2)

public static List<String> scanNumberToListUntilAppears(String end) {

    if(end == null || end.isEmpty())
        end = "end";

    List<String> numbers = new ArrayList<>();
    String message = "Enter an ISBN number: ";

    try (Scanner input = new Scanner(System.in)) {

        System.out.print(message);
        while(input.hasNext()) {

            String isbn = input.nextLine();
            if(isbn.equalsIgnoreCase(end)) {

                if(!numbers.isEmpty())
                    break;

            } else {

                numbers.add(isbn);
                if(numbers.size() == 1)
                    message = "Enter the next ISBN number or '" + end + "': ";
            } 

            System.out.print(message);
        }

        input.close();
    }

    return numbers;
}

答案 1 :(得分:1)

while (istr.get() != std::char_traits<char>::eof())
  max++;