2017-05-30 9 views
-1

asmファイルをバイナリ命令に変換する基本的なアセンブラをコーディングしています。手順の1つは、ファイルの各行が@で始まるかどうかをテストすることです。私はファイル内のすべての行の最初の文字をループし、どのファイルが@で始まるかテストする必要があります。すべての行の先頭文字の読み方

これまでのところ、私のコードはループを継続せず、最初の行の最初の文字のみをテストします。それだけです。ここでは、次のとおりです。ここで

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); 
} 
関連する問題