2016-11-01 13 views
-1

これはISBNの13番目の数字を計算するコードですが、問題が発生しているようです。それは無効な文字定数についての返答で私にエラーを与え続け、それを変更するたびに、メソッド名にエラーが出ます。理由はわかりません。私のプログラムで「無効な定数エラー」が発生し続けていますが、その理由はわかりません。

import java.util.Scanner; 

    public class ISBN { 

public static int VerifyISBN(String isbn) { 
    if(isbn.matches("[0-9]+") && isbn.length() > 12){ 
    for(int i = 0; i < 12; i++){ 
     char digit = isbn.charAt(i); 
     int sum = 0; 
     if (Character.isDigit(digit)){ 
      int digitValue = digit - '0'; 
      if(i % 2 == 0) 
       sum += digitValue; 
      else sum += 3 * digitValue; 
     } 
     else 
      return 'invalid'; (This is where I get the error) 
     } 
    } 
} 

public static void main(String[] args) { 
    final String TITLE = "ISBN-13 Identifier"; 

    System.out.println("Welcome to the " + TITLE); 
    Scanner input = new Scanner(System.in); 

    String response; 
    do { 
     System.out.print("Enter the first 12 digits of an ISBN-13: "); 
     String isbn = input.nextLine().trim(); 

     //String isbnVerifier = generateISBN(isbn); 
     //if(isbn.equals("INVALID")); 

     System.out.println("The 13th number of" + isbn + " is " + 
      ((verifyISBN(isbn)))); 

     System.out.print("Do this again? [nY]"); 
     response = input.nextLine().toUpperCase(); 

    } while (!response.equals("N")); 

    input.close(); 
    System.out.println("Thank you for using the " + TITLE); 

} 

}

+2

'invalid''が無効 – Eran

答えて

1

2つの問題:

  1. リテラル'invalid'が正しくないJava構文です。文字列は二重引用符で区切られます。単一引用符は、単一文字のリテラルを区切るために使用されます(例:'a')。文字列には使用できません。
  2. このメソッドは整数を返すように宣言されているため、Stringを返すことはできません。あなたの目的は、入力が無効であることを示す標識値を返すことであれば

、あなたはおそらく、エラー条件として、発信者が解釈できる-1、のようなものを使用する必要があります。

または、例外をスローするメソッドを定義できます。

+0

-1を使用すると、メソッドがintを返す必要があるというエラーが表示されます – GCS1249

関連する問題