-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);
}
}
}
}
什麼是'stringBuffer'?你爲什麼不顯示相關的代碼? –
請修復您的縮進。請記住,我們花費在回答問題上的努力量大致與您提出問題的努力量成正比。 –
考慮到你的'stringBuffer'被初始化爲某個文件的全部內容,你爲什麼會感到驚訝,'stringBuffer.charAt(0)'給你的東西不是緩衝區的第一個字符? –