在下面的程序中,我试图检查号码是否为ISBN。我给输入空格(例如:0 3 0 6 4 0 6 1 5 2
),因为数组只接受它。我不知道如何在没有空间阅读的情况下提供输入。任何人都可以帮我如何读取数字,例如:0306406152,它也会读取10个数字,如果(i == 10),否则它说它不是ISBN号来提供输出。
public class ISBN {
int digits[];
int dig = 11;
int sum;
int isbn1;
public void CheckISBN() {
for (int digit : digits) {
// System.out.println(digit);
if (dig >= 1) {
dig--;
digit = digit * dig;
// System.out.println(dig);
}
sum = sum + digit;
isbn1 = sum % 11;
}
if (isbn1 == 0) {
System.out.println(isbn1);
System.out.println("it's valid ISBN number");
} else {
System.out.println("sorry it's not valid ISBN");
}
}
public static void main(String[] args) {
ISBN aa = new ISBN();
aa.digits = new int[10];
Scanner scan = new Scanner(System.in);
int i = 0;
while (scan.hasNextInt()) {
aa.digits[i] = scan.nextInt();
i++;
if (i == 10) // aa.CheckISBN();
{
break;
}
for (int j = 0; j < aa.digits.length; j++) {
// System.out.print(aa.digits[j]);
}
//System.out.println();
}
aa.CheckISBN();
}
}
SAMPLE OUTPUT
:0 3 0 6 4 0 6 1 5 2
它的有效ISBN号
答案 0 :(得分:0)
如果没有空格,
import java.io.*;
import java.util.*;
public class ISBN {
int digits[];
int dig = 11;
int sum;
int isbn1;
public void CheckISBN() {
if(this.digits.length != 10)
{
System.out.println("sorry it's not valid ISBN");
return;
}
for (int digit : digits) {
// System.out.println(digit);
if (dig >= 1) {
dig--;
digit = digit * dig;
// System.out.println(dig);
}
sum = sum + digit;
isbn1 = sum % 11;
}
if (isbn1 == 0) {
//System.out.println(isbn1);
System.out.println("it's valid ISBN number");
} else {
System.out.println("sorry it's not valid ISBN");
}
}
public static void main(String[] args) {
ISBN aa = new ISBN();
Scanner scan = new Scanner(System.in);
String num = scan.next(); //take input as a string
int[] digits = new int[num.length()];
for(int i = 0; i<digits.length; i++)
digits[i] = num.charAt(i) - '0';
aa.digits = digits;
aa.CheckISBN();
}
}
答案 1 :(得分:0)
或者将其扫描为int
以免费获得数字格式验证:
public class ISBN {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
if (scan.hasNextInt()) {
checkISBN(scan.nextInt());
}
}
public static void checkISBN(int isbn) {
int sum = sum(digits(isbn));
int isbn1 = sum % 11;
if (isbn1 == 0) {
System.out.println(isbn1);
System.out.println("it's valid ISBN number");
} else {
System.out.println("sorry it's not valid ISBN");
}
}
private static int sum(int[] digits) {
return IntStream.rangeClosed(1, digits.length)
.map(i -> i * digits[digits.length - i])
.sum();
}
private static int[] digits(int isbn) {
return Integer.toString(isbn)
.chars()
.map(c -> c - '0')
.toArray();
}
}
N.B。:适用于带有或不带前导零的ISBN。