如何读取每行的第一个字符
问题描述:
我正在编写一个基本的汇编程序,它会将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);
}
}
}
}
答
我认为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);
}
什么是'stringBuffer'?你为什么不显示相关的代码? –
请修复您的缩进。请记住,我们花费在回答问题上的努力量大致与您提出问题的努力量成正比。 –
考虑到你的'stringBuffer'被初始化为某个文件的全部内容,你为什么会感到惊讶,'stringBuffer.charAt(0)'给你的东西不是缓冲区的第一个字符? –