2017-05-30 3 views
-1

Ich bin eine grundlegende Assembler Codierung, die asm Dateien in binäre Anweisungen konvertieren wird. Einer der Schritte besteht darin, zu testen, ob jede Zeile der Datei mit @ beginnt. Ich muss den ersten Buchstaben jeder Zeile in einer Datei wiederholen und testen, welche mit @ beginnen.So lesen Sie das erste Zeichen jeder Zeile

Mein Code ist bisher nicht kontinuierlich Schleife und testet stattdessen das erste Zeichen der ersten Zeile und das ist es. Hier ist sie:

try (Scanner s = new Scanner(chooser.getSelectedFile().getName())) { 
    while (s.hasNextLine()) { 
     //int change2Int = s.nextInt(); 
     String linept = ""; 
     linept += (stringBuffer.charAt(0)); 
     s.nextLine(); // ignore the rest of the line 
     // i++; 
     System.out.println(linept); 
    } 
} 

Hier ist meine gesamte Code für mehr Klarheit:

public class Assembler 
    { 

public static void main(String[] args) throws IOException { 


JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new File(".")); 

chooser.setFileFilter(new javax.swing.filechooser.FileFilter() { 
    public boolean accept(File f) { 
    return f.getName().toLowerCase().endsWith(".asm") 
     || f.isDirectory(); 
    } 

    public String getDescription() { 
    return "asm File"; 
    } 
}); 

int r = chooser.showOpenDialog(new JFrame()); 
if (r == JFileChooser.APPROVE_OPTION) { 
    String name = chooser.getSelectedFile().getName(); 
    System.out.println(name); 
} 

    BufferedReader bufferedReader = new BufferedReader(new 
FileReader(chooser.getSelectedFile().getName())); 

StringBuffer stringBuffer = new StringBuffer(); 
String line = null; 

while((line =bufferedReader.readLine())!=null){ 

    stringBuffer.append(line).append("\n"); 

    Assembler assembler = new Assembler(); 
// assembler.AorC(stringBuffer); 

} 

System.out.println(stringBuffer); 


try (Scanner s = new Scanner(chooser.getSelectedFile().getName())) { 
    while (s.hasNextLine()) { 
     //int change2Int = s.nextInt(); 
     String linept = ""; 
     linept += (stringBuffer.charAt(0)); 
     s.nextLine(); // ignore the rest of the line 
     // i++; 
     System.out.println(linept); 
    } 
    } 
} 

}

+1

Was ist 'stringBuffer'? Warum zeigen Sie nicht relevanten Code? –

+3

Bitte korrigieren Sie Ihren Einzug. Denken Sie daran, dass der Aufwand, den wir für die Beantwortung Ihrer Frage aufwenden, in etwa proportional zum Aufwand ist, den Sie für die Beantwortung Ihrer Frage aufwenden. –

+0

Da Ihr 'stringBuffer' für den gesamten Inhalt einer Datei initialisiert wird, warum überrascht es Sie, dass' stringBuffer.charAt (0) 'Ihnen immer wieder etwas anderes als das erste Zeichen dieses Puffers gibt? –

Antwort

1

Ich denke, es ist besser, die Behandlung der Eingabedatei ändern und verwenden Filereader stattdessen Scanner:

try { 
FileReader fileReader = new FileReader(arq.getSelectedFile()); 
BufferedReader bufferedReader = new BufferedReader(fileReader); 

int sum; 
String linept = ""; 
    while ((linept = bufferedReader.readLine()) != null) {      
    if(linept.startsWith("@")){ 
     System.out.println(sum); 
    } 
    } 
System.out.println("Result: "+sum); 
} 
Verwandte Themen