2015-03-20 2 views
-1

Программа предназначена для поиска, если пользовательский ввод является палиндромом. Однако в методе isPalindrome я все время получаю указанную ошибку. И когда я исправляю это, я получаю 24 ошибки, говоря, что он не может найти несколько других переменных. Пожалуйста помоги.Else without If error (программа Palindrome)

Вот код:

import java.util.Scanner; 

public class Project4 
{ 
    public static void main (String [] args) { 

     String line = getInputLine(); 
     while (!isEmptyLine (line)) { 
      if (isPalindrome (line)) 
       System.out.println ("\"" + line + 
        "\" is a palindrome and a " + getPalType (line)); 
      else 
       System.out.println ("\"" + line + 
        "\" is not a palindrome"); 
       line = getInputLine(); 

      } 
      System.out.println ("End of prgram"); 
     } 

    public static String getInputLine() //Ask user for input and then returns the line 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter your possible Palindrome: "); 
     String getInputLine = scan.nextLine(); 
     return getInputLine; 
    } 


    public static boolean isEmptyLine (String str) // Return TRUE if the paramater is empty or False otherwise 
    { 
     if (line != null) 
     { 
      isEmptyLine = true; 
     } 
     else 
     { 
      isEmptyLine = false; 
     } 
    } 

    public static boolean isPalindrome (String str)// Return TRUE if the str is a palindrome or FALSE otherwise 
    { 
     int left = 0; 
     int right = line.length() - 1; 
     boolean okay = true; 

     while (okay && left < right){ 

      char ch1 = line.charAt(left); 

      if (!(Character.isDigit(ch1) || Character.isLetter(ch1))){ 

       left ++; 

      else{ 
       ch2 = line.charAt(right); 
      } 

       if (!(Character.isDigit(ch2) || Character.isLetter(ch2))){ 
        right --; 

       else{ 
        ch1 = Character.toUpperCase(ch1); 
        ch2 = Character.toUpperCase(ch2); 
       } 
       if (ch1 == ch2){ 
        left ++; 
        right --; 

       else{ 
        okay = false; 
       } 
       } 
      } 
     } 
    } 
    return okay; 
} 

public static String getPalType (String str)//Determine the type of the palindrome and return either word/phrase/number. 
{ 
    int num = 0; 
    int let = 0; 
    int length = line.length(); 

    for (int i = 0; i <= length; i++) 
    { 
     if (Character.isDigit(line.charAt(i))) 
      num++; 
     else if (Character.isLetter(line.charAt(i))) 
      let++; 
    } 

    if (num > 0 && let == 0) 
    { 
     getPalType = number; 
     return getPalType; 
    } 
    else if (let > 0 && num == 0) 
    { 
     getPalType = word; 
     return getPalType; 
    } 
    else 
     getPalType = phrase; 
     return getPalType; 

    } 
} 
+0

Вы перепутали свой скобку, например, 'если { право - ; else {'- вы не закрываете оператор' if'. –

ответ

0

Отсутствие вашей верхней стартовый кронштейн на

if (isPalindrome (line)) 

Вы не можете использовать закрывающий стиль одну строку, если у вас есть один или другой. Просто добавьте начальную скобку.

должно быть это: - (! (Character.isDigit (ch2) || Character.isLetter (ch2)))

while (!isEmptyLine (line)) { 
    if (isPalindrome (line)){ 
     System.out.println ("\"" + line + 
      "\" is a palindrome and a " + getPalType (line)); 
    }else{ 
     System.out.println ("\"" + line + 
      "\" is not a palindrome"); 
     line = getInputLine(); 

    } //since you have two lines not one in the else. 
    } 
    System.out.println ("End of prgram");