我应该改变,使这个文件汇编?(What should I change to make this f

2019-09-01 08:18发布

我在编程类,并将该软件是我的功课的一部分。 该文件从一个名为“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

Answer 1:

区分大小写可能是您的问题。 看看堆栈溢出问题就是Java区分大小写?

我会建议改变的情况下, static

public static Name findName()

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



Answer 2:

这里有很多的问题。 我强烈建议您重温教程和坐下来,无论是教师或助教敲定的核心语法的理解。

  • static是一个关键字。 它是区分大小写的。 您必须更改的所有大写形式static小写。

  • 从你有你的代码是什么,有没有叫任何类Name 。 那将会带来一个巨大的问题。

  • nameIn是一个String 。 它不会有一个名为方法findName

  • int[] popularity没有定义它的任何尺寸。 您将尝试取消引用空当你去的东西添加到这个阵列。 通过适当地声明它的大小new int[nameLine.length]

  • 这些线发出的虚假信息; 我相信你的意思是将其更改为一个自然的数字顺序,而不必1点一路走低?

     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

我敢肯定有更多的,但我要在这里停留。 一旦你得到这些整理出来,你可能会在首要位置,以解决其余部分



文章来源: What should I change to make this file compile?