2012-05-09 1 views
0

Я новичок в Java и получили следующие две ошибки, когда я составил:ошибки компилятора Java с использованием jGRASP

stringConvert3.java:29: illegal start of expression 
public static void main (String [] args) throws Exception //Main 
^ 
stringConvert3.java:57: ';' expected 
private class InnerToLowerCaseString //Second class (Inner) to convert to lower case 
      ^

Ниже приведен код, который я работал. , ,

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.lang.*; 

//java.lang.needed to perform the "squeeze" method on strings. 


public class stringConvert3 //First class and actual program. 
{ 

static Scanner console = new Scanner (System.in); 
public void printEven(){ 
String str; 

public static void main (String [] args) throws Exception //Main 
    { 

    String str; 

    //The following imports the 5 line test text from a saved file (test.txt). 
    Scanner inFile = new Scanner (new FileReader("c:\\test.txt")); 
    while (inFile.hasNextLine()){ 
    String line = inFile.nextLine(); 
    System.out.printf("Scan = %s\n", line); 

     String save; 
     save = line; 
     str = save; 
     System.out.printf ("Receive: <%s>\n", str); 

      InnerToLowerCaseString innerString = this.new InnerToLowerCaseString(); 
      str = InnerToLowerCaseString.lowerCase (str); 
      str = save; 
      str = trimmed (str); //Trims and abreviates. 
      System.out.printf ("Trimmed: <%s>\n", str); 
      str = squeeze (str); //Squeezes text. 
      System.out.printf ("Squeezed: <%s>\n", str); 

      if (str.length() >= 50) 
      str = str.substring (0,20); 
    }  

    private class InnerToLowerCaseString //Second class (Inner) to convert to lower case 
    { //Brace to start the second class. 

    //Following method converts all letters of String to lower case letters. 

     private String lowerCase (String str) 
      { 
      str = str.toLowerCase(); 
      System.out.printf ("Convert to Lower: <%s>\n", str); 
      return str; 
      } 

    } //Brace to end the second class. 
    } 

    public class threeMethods //Third class, containing three methods. 
    { 
     public static String trimmed (String str) //First method. 
    { 
      Scanner inFile = new Scanner (new FileReader ("c:\\test.txt"));  
      return str.trim(); 
    } 

    public static String trimmed (String str, int len) //Second method. 
    { 
     str = trimmed (str); 
     if (str.length() > 10) 
      return str.substring (0, 10); 

     else 
      return str; 
    } 

    public static String squeeze (String str) //Third method. 
    { 
     int length; 

     do 
     { 
      length = str.length(); 
      str = str.replaceAll (" ", " "); 

      } while (length != str.length()); 
      return (str); 

    } //End of squeeze section. 


} // End of the main. 

}//End of stringConvert3 program. 

ответ

0

Открытая скобка, что часть вашего определения printEven() метода вблизи начало вашего кода никогда не совмещаются с закрывающей скобкой, так main() кажется, внутри printEven(). Это не является законным - вы не можете определить метод внутри другого метода, поэтому компилятор жалуется.

Я просмотрел остальную часть кода, чтобы узнать, какие у вас другие ошибки, и на самом деле есть много. Это почти похоже, что вы сознательно пытается определить методы внутри других методов; если вам это нужно, вы должны перестать пытаться и реализовать свою программу правильно. Также обратите внимание, что внутренний класс, определенный внутри метода (который является, фактически, законным), не может иметь квалификатор доступа: если вы определяете InnerToLowerCaseString внутри метода, то он не может быть помечен private.

Наконец, обратите внимание, что, несмотря на ваш комментарий, импорт java.lang is never необходимо, так как он всегда импортируется неявно. Выполнение этого явно просто заставляет ваш код выглядеть дилетантским, поэтому не делайте этого!