如何读取每行的第一个字符

问题描述:

我正在编写一个基本的汇编程序,它会将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)'给你的东西不是缓冲区的第一个字符? –

我认为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); 
}