2013-04-29 27 views
-2

我的程序不会编译,我不完全明白为什么。如果你能告诉我我需要添加或改变那将会很棒!此代码旨在从文件“Names.txt”中获取数据列表并进行分析。文件不会编译,要更改什么?

这里是我的代码:

import java.util.Scanner; 
import java.io.File; 
import java.io.FileNotFoundException; 

public class NameApp { 
    public static void main(String[] args) { 
     Scanner stdin = new Scanner(System.in); 
     String selection, nameIn, nameIn2; 
     Name name, name2; 
     int decade; 
     String first = "1", second = "2", third = "3", fourth = "4", fifth = "5", sixth = "6", seventh = "7", eighth = "8", ninth = "9", tenth = "10"; 
     do { 
      System.out.println("Enter the character corresponding to your selection:"); 
      System.out.println("a - Print histogram for a name"); 
      System.out.println("b - Compare two names in a decade"); 
      System.out.println("c - Print top ten names for a decade"); 
      System.out.println("d - Quit (display file anomalies)"); 
      selection = stdin.next(); 
      System.out.println("your selection: " + selection); 
      if (selection.equalsIgnoreCase("a")) { 
       System.out.println("Enter a name: "); 
       nameIn = stdin.next(); 
       name = nameIn.findName(); 
       System.out.println("Histogram for name, " + name.getName()); 
      } 
      if (selection.equalsIgnoreCase("b")) { 
       System.out.println("Enter a name: "); 
       nameIn = stdin.next(); 
       name = nameIn.findName(); 
       System.out.println("Enter a name: "); 
       nameIn2 = stdin.next(); 
       name2 = nameIn.findName(); 
       System.out.println("Enter number corresponding to your decade:"); 
       System.out.println("1 - 1900-1909"); 
       System.out.println("2 - 1910-1919"); 
       System.out.println("1 - 1920-1929"); 
       System.out.println("1 - 1930-1939"); 
       System.out.println("1 - 1940-1949"); 
       System.out.println("1 - 1950-1959"); 
       System.out.println("1 - 1960-1969"); 
       System.out.println("1 - 1970-1979"); 
       System.out.println("1 - 1980-1989"); 
       System.out.println("1 - 1990-1999"); 
       System.out.println("1 - 2000-2005"); 
       System.out.println("Enter a decade: "); 
       decade = stdin.nextInt(); 
       System.out.println("Data for " + name.getName()); 
       System.out.println(name.getHistoLine(decade)); 
       System.out.println("Date for " + name2.getName()); 
       System.out.println(name2.getHistoLine(decade)); 
      } 
      if (selection.equalsIgnoreCase("C")) { 
       System.out.println("Enter number corresponding to your decade:"); 
       System.out.println("1 - 1900-1909"); 
       System.out.println("2 - 1910-1919"); 
       System.out.println("1 - 1920-1929"); 
       System.out.println("1 - 1930-1939"); 
       System.out.println("1 - 1940-1949"); 
       System.out.println("1 - 1950-1959"); 
       System.out.println("1 - 1960-1969"); 
       System.out.println("1 - 1970-1979"); 
       System.out.println("1 - 1980-1989"); 
       System.out.println("1 - 1990-1999"); 
       System.out.println("1 - 2000-2005"); 
       System.out.println("Enter a decade: "); 
       decade = stdin.nextInt(); 
       System.out.println("Ten most popular names (male and female) during the decade 1990-1999 were: "); 
       System.out.println(first.findRank(decade)); 
       System.out.println(second.findRank(decade)); 
       System.out.println(third.findRank(decade)); 
       System.out.println(fourth.findRank(decade)); 
       System.out.println(fifth.findRank(decade)); 
       System.out.println(sixth.findRank(decade)); 
       System.out.println(seventh.findRank(decade)); 
       System.out.println(eighth.findRank(decade)); 
       System.out.println(ninth.findRank(decade)); 
       System.out.println(tenth.findRank(decade)); 
      } 
      if (!selection.equalsIgnoreCase("a") || !selection.equalsIgnoreCase("b") || !selection.equalsIgnoreCase("C") || !selection.equalsIgnoreCase("d")) 
       ; 
      { 
       System.out.println("Invalid input. Try again"); 
      } 
     } 
     while (!selection.equalsIgnoreCase("d")); 
     if (selection.equalsIgnoreCase("d")) { 
     } 
    } 

    public Static Name findName() { 
     String fileName = "Names.txt"; 
     Scanner inputStream = null; 
     try { 
      inputStream = new Scanner(new File(fileName)); 
     } catch (FileNotFoundException e) { 
      System.out.println("Error opening the file" + inputStream); 
      System.exit(0); 
     } 
     String line; 
     while (inputStream.hasNextLine()) { 
      line = inputStream.nextLine(); 
      String[] nameLine = line.split(" "); 
      String babyName = nameLine[0]; 
      int[] popularity; 
      for (int k = 0; k < nameLine.length; k++) { 
       popularity[k] = Integer.parseInt(nameLine[k + 1]); 
      } 
      if (this.equalsIgnoreCase(babyName)) { 
       Name name = new Name(babyName, popularity); 
      } else { 
       System.out.print("Sorry that name was not found"); 
      } 
     } 
     return name; 
    } 

    public Static String findRank(int decade) { 
     String fileName = "Names.txt"; 
     Scanner inputStream = null; 
     try { 
      inputStream = new Scanner(new File(fileName)); 
     } catch (FileNotFoundException e) { 
      System.out.println("Error opening the file" + inputStream); 
      System.exit(0); 
     } 
     String top = ""; 
     String line; 
     while (inputStream.hasNextLine()) { 
      line = inputStream.nextLine(); 
      String[] nameLine = line.split(" "); 
      String babyName = nameLine[0]; 
      int[] popularity; 
      for (int k = 0; k < nameLine.length; k++) { 
       popularity[k] = Integer.parseInt(nameLine[k + 1]); 
      } 
      if (popularity[decade - 1] == Integer.parseInt(this)) { 
       top = top + babyName + "(" + this + ")" + "  "; 
      } 
      return top; 
     } 
    } 
} 

以下是编译错误:

NameApp.java:126: ';' expected 
    public Static Name findName() 
        ^
NameApp.java:126: invalid method declaration; return type required 
    public Static Name findName() 
        ^
NameApp.java:161: ';' expected 
    public Static String findRank(int decade) 
         ^
NameApp.java:161: invalid method declaration; return type required 
    public Static String findRank(int decade) 
         ^
4 errors 
+0

你刚才在一个小时前问过。你真的应该只是阅读一个教程。 – 2013-04-29 01:21:24

+0

我想我会在你的重复帖子上回答这个问题。除了关键字或两个关键字的大写之外,还有很多其他内容。 – Makoto 2013-04-29 01:38:04

回答

0

在函数声明,使用 '静态' 而不是 '静'

+0

我应该使用静态吗? – user2328244 2013-04-29 01:19:11

+0

你应该在你认为不属于任何实例化对象的函数中使用static关键字,即。这个类的一个函数。 – Bpache 2013-04-29 01:25:28

3

Java区分-敏感。 static关键字必须小写。你的代码全部小写没有static;因此,编译器将Static解释为返回类型,将实际返回类型解释为名称,然后扼杀实际名称。

要解决此问题,只需将Static更改为static