2017-05-30 32 views
-1

我正在編寫一個基本的彙編程序,它會將asm文件轉換爲二進制指令。其中一個步驟是測試文件的每一行是否以@開頭。我需要循環文件中每行的第一個字母,並測試哪些以@開頭。如何讀取每行的第一個字符

我的代碼到目前爲止不會連續循環,而只是測試第一行的第一個字符,就是這樣。那就是:

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); 
    } 
} 

這是我爲了更清楚,整個代碼:

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

什麼是'stringBuffer'?你爲什麼不顯示相關的代碼? –

+3

請修復您的縮進。請記住,我們花費在回答問題上的努力量大致與您提出問題的努力量成正比。 –

+0

考慮到你的'stringBuffer'被初始化爲某個文件的全部內容,你爲什麼會感到驚訝,'stringBuffer.charAt(0)'給你的東西不是緩衝區的第一個字符? –

回答

1

我認爲it's好轉輸入文件的處理和使用的FileReader代替掃描儀:

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); 
} 
相關問題