使用构造函数和访问器方法

时间:2015-07-01 22:24:24

标签: java constructor accessor

package Learning;

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

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

            throws IOException {
                Scanner diskScanner =
                        new Scanner(new File("MatchScoress.txt")); //the file has to be in the package, in this case the Learning folder.

                for (int games = 1; games <= 5; games++) {
                    checkoutscores(diskScanner);
                        }
                    diskScanner.close();
                        }

            static void checkoutscores(Scanner aScanner) {
                MatchScore aMatch = new MatchScore();
                aMatch.setMatchNumber(aScanner.nextLine());
                aMatch.setKillsInMatch(aScanner.nextLine());
                aMatch.setDeathsInMatch(aScanner.nextLine());
                aScanner.nextLine();
        }
    }
  

这是我的构造函数方法。我已创建它,以便设置匹配号,终止号码和死亡号码。这些只是我创造的变量,然后不是来自任何游戏或任何东西。

ConcurrentMap<String, Integer> map = /* something */;

// entrySet just returns a view of the entries, so copy it into a new List
List<Map.Entry<String, Integer>> entries = new ArrayList<>(yourMap.entrySet());

// sort entries by their int values
Collections.sort(entries, (entry1, entry2) -> Integer.compare(entry1.getValue(), entry2.getValue()));

// copy just the keys into a new List
List<String> result = new LinkedList<>();
for (Map.Entry<String, Integer> entry : entries) {
  result.add(entry.getKey());
}
  

这将是访问者方法。我创建了一个具有匹配号,终止号码和死亡号码的文件。我得到错误“线程中的异常”主“java.util.NoSuchElementException:找不到行       在java.util.Scanner.nextLine(未知来源)       在Learning.MatchScoreS.checkoutscores(MatchScoreS.java:22)       在Learning.MatchScoreS.main(MatchScoreS.java:15)“。   当我删除“aScanner.nextLine();程序不会给我一个错误,但它不会给我带来匹配号等等。

我刚刚开始学习java,我正在使用Accessor和构造函数方法的章节。任何帮助都是极好的!!感谢。

1 个答案:

答案 0 :(得分:0)

你似乎有点困惑。您声明整个类是一个存取方法,另一个类是构造方法。访问器只是类中的函数,构造函数也是如此。

如果你有一个变量foo,它的访问者通常采用以下形式:

void setFoo(<type> value) {
    foo = value
}

<type> getFoo() {
    return foo;
}

因此,在您的代码中,setMatchNumber()getName()setKillsInMatch()getKillsInMatch()等是访问者(getName()应该被称为getMatchNumber() })。

构造函数是一个声明的方法,其名称与包含它的类相同,声明中没有返回类型。例如,对于您可能拥有的MatchScore课程

public MatchScore(String num, String kills, String death) {
    MatchNumber = num;
    KillsInMatch = kills;
    DeathsInMatch = death;
}

(顺便说一下,通常字段和局部变量都是非大写的,所以它们应该是matchNumberkillsInMatchdeathsInMatch

现在,对于您的特定异常:看起来您的Matchscoress.txt文件只有3行,因此前三个nextLine()调用成功,第四个调用异常。