2013-04-28 60 views
-3

我在編程課,這個程序是我家庭作業的一部分。該文件從名爲「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

'String'類沒有這些方法。 – 2013-04-28 23:11:38

+0

@SotiriosDelimanolis那麼我應該如何解決輔助方法呢? – user2328244 2013-04-28 23:15:10

+0

閱讀有關java方法的教程。您可以實例化您的類的實例或使您的方法變爲靜態。 – 2013-04-28 23:24:33

回答

1

區分大小寫可能是您的問題。看看堆棧溢出問題Is Java case-sensitive?

我建議改變的static情況:

public static Name findName() 

很多你的作品似乎錯在此。例如,你的字符串的聲明。

0

這裏有一個很多的問題。我強烈建議鼓勵您重溫教程,並與導師或TA一起討論核心語法理解。

  • static是關鍵字。它是區分大小寫的。您必須將所有大寫形式的static更改爲小寫。

  • 從你擁有的代碼中,沒有任何類叫Name。這將會造成巨大的問題。

  • nameInString。它會而不是有一個方法稱爲findName

  • int[] popularity沒有任何尺寸的定義。當你將這些東西添加到這個數組時,你會試圖解除引用null。通過new int[nameLine.length]正確聲明其尺寸。

  • 這些行發出虛假信息;我認爲你的意圖是將它們改爲自然的數字排序,而不是一路下降?

    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"); 
    
  • firstsecond...tenth都是String類型。他們做不是有一個方法findRank

我確定還有更多,但我會停在這裏。一旦你得到那些整理出來,你很可能會在首要位置修復其餘

相關問題