尝试从哈希图获取对象时获取"不是语句"



当我试图从哈希图中获取对象以便使用它时,我遇到了一个错误。当我使用这句话时:

                    Linje 1=linjerMap.get(linjeList[i]);

其中Linje是Object,1是所需的对象变量,linjerMap是hashmap,linjeList是存储对象密钥名称的位置。

代码的其余部分:

import java.util.*;
import java.io.*;
class Oblig5{
    public static void main(String[] args){
    Planlegger starten=new Planlegger();
    starten.lesFil();
    }
}
class Planlegger{
    Scanner input=new Scanner(System.in);
    HashMap<String, Linje> linjerMap=new HashMap<String, Linje>();
    HashMap<String, Stasjon> stasjonerMap=new HashMap<String, Stasjon>();
    void lesFil(){
        Linje linjer;
        Stasjon stasjoner;
        String linjeLest="";
        String aktuellLinje="";
        String linjeNummer="";
        char[] linjeNummerA;
        int linjeNummerInt=0;
        try{
            Scanner innFil=new Scanner(new File("Rutetabell.txt"));
            while(innFil.hasNextLine()){
                linjeLest=innFil.nextLine().toLowerCase();
                if(linjeLest.contains("linje")){
                    System.out.println("TESTILINJE");
                    //Bruker en string for linjenummeret her for å lette bruken av nummeret som key i HashMapen. 
                    linjeNummerInt=Integer.parseInt(linjeLest.replaceAll("[\D]", ""));
                    // linjeNummerA[0]=linjeLest.split("*linje* ").charAt(0);
                    // linjeNummer=linjeNummer[0];
                    linjer=new Linje(linjeNummer);
                    aktuellLinje=linjeNummer;
                    linjerMap.put(linjeNummer, linjer); 
                }else{
                    System.out.println("TESTISTASJON");
                    //Dersom ikke objektet finnes i hashmapen for stasjoner allerede, så lages objektet og lagres i HashMapen. 
                    if(!stasjonerMap.containsKey(linjeLest)){
                        stasjonerMap.put(linjeLest, new Stasjon(linjeLest));
                    }
                    //Her henter jeg ut objektet vi lager over, og om det ikke lages fordi det allerede eksisterer så hentes det ut uansett.
                    stasjoner=stasjonerMap.get(linjeLest);
                    //Her brukes objektinformasjonen over til å registrere stasjonen i objektet
                    linjer=linjerMap.get(aktuellLinje);
                    linjer.registrerStasjoner(linjeLest, stasjoner);
                    stasjoner.registrerNyLinje(aktuellLinje, linjer);
                }       
            }
            innFil.close();
        }catch(IOException e){
            e.printStackTrace();
        }
        System.out.println("Test");
        String sjekkHashmap=input.nextLine();
        if(stasjonerMap.containsKey(sjekkHashmap)){
            System.out.println("Det funker!");
        }
    }
    void beregnRuter(Stasjon fraSt, Stasjon tilSt){

    }
    void lesFraTil(){
        fraStasjon();
    }
    void fraStasjon(){
        boolean sjekkStasjon=true;
        while(sjekkStasjon){
            System.out.println("Vennligst tast inn fra-stasjonen: ");
            String startStasjon=input.next().toLowerCase();
            if(stasjonerMap.containsKey(startStasjon)){
                sjekkStasjon=false;
                tilStasjon(startStasjon);
            }else{
                System.out.println("Stasjon ikke funnet.");
                sjekkStasjon=true;
            }
        }
    }
    void tilStasjon(String startStasjon){
        boolean sjekkStasjon=true;
        while(sjekkStasjon){
            System.out.println("Vennligst tast inn til-stasjonen: ");
            String sluttStasjon=input.next().toLowerCase();
            if(stasjonerMap.containsKey(sluttStasjon)){
                sjekkStasjon=false;
                rutePlanlegger(startStasjon, sluttStasjon);
            }else{  
                System.out.println("Stasjon ikke funnet.");
                sjekkStasjon=true;
            }
        }
    }
    void rutePlanlegger(String startStasjon, String sluttStasjon){
        Stasjon til=stasjonerMap.get(startStasjon);
        Stasjon fra=stasjonerMap.get(sluttStasjon);
        int tilStasjonsTall, fraStasjonsTall;
        int retning;
        double tid= 0.0;
        String endeStasjonsNavn;
        tilStasjonsTall=0;
        fraStasjonsTall=0;
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size(); j++) {
                if(fra.linjeList[i].equals(til.linjeList[j])){
                    Linje 1=linjerMap.get(linjeList[i]);
                    retning=1.stasjonsNummer(startStasjon) - 1.stasjonsNummer(sluttStasjon);
                    endeStasjonsNavn=1.endestasjon(retning).stasjonsNavn;
                    System.out.println("Ta T-bane linje " + 1.linjeNummer + " fra " + startStasjon + " til " sluttStasjon + " i retning " + endeStasjonsNavn + ". Estimert reisetid: " + tid);

            }
        }
    }
}
class Linje{
    String linjeNummer="";
    HashMap<String, Stasjon> linjeStasjoner=new HashMap<String, Stasjon>();
    int antallStasjoner=0;
    int type=0;
    ArrayList<Stasjon> stasjonsList=new ArrayList<Stasjon>();
    int antall=stasjonsList.length();
    Linje(String linjeNummer){
        this.linjeNummer=linjeNummer;   
        if (linjeNummer<10){
            type=0;
        }else{
            type=1;
        }
    }

    void registrerStasjoner(String linjeLest, Stasjon stasjon){
        linjeStasjoner.put(linjeLest, stasjon);
        stasjonsList.add(stasjon);
        antallStasjoner++;
    }
    boolean inneholder(Stasjon stasjon){
        boolean sannhetsSjekk=true;
        if(stasjonsList.contains(stasjon)){
            sannhetsSjekk=true;
        }else{
                sannhetsSjekk=false;
        }
        return sannhetsSjekk;
    }
    Stasjon endestasjon(int retning) {                
        if (retning > 0) {
            return stasjoner[0];
        }
        return stasjoner[antall-1];
    }
    int stasjonsNummer (Stasjon s) {
        for (int i = 0; i < stasjonsList.length(); ++i) {
            if (stasjoner[i] == s) {
                return i;
            }
        }
        return -1;
    }          
}
class Stasjon{
    String stasjonNavn;
    Linje linje;
    HashMap <String, Linje> stasjonsLinjer=new HashMap<String, Linje>();
    ArrayList<Linje> linjeList=new ArrayList<Linje>();
    int teller=0;
    Stasjon(String linjeLest){
    this.stasjonNavn=linjeLest;
    }
    void registrerNyLinje(String aktuellLinje, Linje linje){
    stasjonsLinjer.put(aktuellLinje, linje);
    linjeList.add(linje);
    teller++;
    }
}
class Overgang{
        Linje l1, l2;
        Stasjon fra,til,bytte;
        Planlegger planlegger;


}

错误:

义务5.java:129:错误:不是语句Linje 1=linjerMap.get(linjeList[i]);^

不能将变量命名为数字文字(或以任何数字开头)。尝试

Linje one = linjerMap.get(linjeList[i]);

JLS第3.8节涵盖了什么可以是合法标识符(重点矿):

标识符是由Java字母和Java数字组成的长度不受限制的序列,其中第一个必须是Java字母

标识符:

IdentifierChars但不是Keyword或BooleanLiteral或NullLiteral

标识符字符:

JavaLetter标识符字符Java字母或数字

JavaLetter:

Java字母的任何Unicode字符(见下文)

Java字母或数字:

Java字母或数字的任何Unicode字符(见下文)

"Java字母"是character.isJavaIdentifierStart(int)方法返回true的字符。

"Java字母或数字"是character.isJavaIdentifierPart(int)方法返回true的字符。

"Java字母"包括大小写的ASCII拉丁字母A-Z(\u0041-\u005a)和A-Z(\u0061-\u007a),由于历史原因,还包括ASCII下划线(_,或\u005f)和美元符号($,或\u0024)。$字符只能在机械生成的源代码中使用,或者很少用于访问遗留系统上预先存在的名称。

"Java数字"包括ASCII数字0-9(\u0030-\u0039)。

变量名称不能以数字开头。因此,"1"是错误的变量名。代替
Linje 1=linjerMap.get(linjeList[i]);

你应该有这样的东西:

Linje x1=linjerMap.get(linjeList[i]);

从这里开始

变量名区分大小写。变量的名称可以是任何合法的identifier——Unicode字母和数字,以字母、美元符号"$"或下划线字符""。然而,大会总是要开始的您的变量名称使用一个字母,而不是"$"或""。此外按照惯例,美元符号根本就不用。你可以在某些情况下,自动生成的名称将包含美元符号,但变量名应始终避免使用它下划线字符也有类似的约定;当它从技术上讲,以"_"开头的变量名称是合法的不鼓励练习。不允许有空白。后来的字符可以是字母、数字、美元符号或下划线字符。惯例(和常识)也适用于这条规则。为变量选择名称时,请使用完整的单词而不是隐晦的缩写。这样做将使您的代码更易于阅读懂在许多情况下,它也会使您的代码自我记录;例如,名为cadence、speed和gear的字段,比缩写版本(如s、c和g.还要记住,您选择的名称不能是关键字或保留字。如果你选择的名字只有一个单词,拼写那个全是小写字母的单词。如果它包含多个单词,将后面每个单词的第一个字母大写。这些名字gearRatio和currentGear就是这个约定的主要例子。如果变量存储一个常数值,例如静态final intNUM_GEARS=6,约定略有变化,每字母,并用下划线分隔后面的单词。按照惯例,下划线字符从不在其他地方使用。

您将映射中的对象分配给名称为1的变量,这在Java中是不允许的。相反,您需要

Linje linje1 = linjerMap.get(linjeList[i]);

请参阅此处了解更多信息:http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367