通过 Java 程序而不是整数将意外字符写入文本文件

Getting unexpected characters written into a text file by a Java Program instead of an integer

我有一个用于两遍汇编程序的 Java 程序,我目前正在为它做两遍汇编程序,在此期间我需要将一个 Integer 写入一个文件,但是一些意想不到的字符被写入文件,我向你保证我要写的值绝对是一个整数,见下文

Symbol Address : 231
Symbol Address : 237
Symbol Address : 237
Symbol Address : 236
Symbol Address : 210
Symbol Address : 210
Symbol Address : 236
Symbol Address : 236

Symbol Address : number, 这个 number 是我想通过下面的代码写入文件的内容,

public String PassTwo() throws Exception{
        String source_inter_file  = "pass_one_output.txt";
        String object_file = "object_code.txt";
        FileReader file_rd = new FileReader(source_inter_file);
        BufferedReader buf_read = new BufferedReader(file_rd);
        FileWriter file_wrte = new FileWriter(object_file);
        BufferedWriter buf_wrte = new BufferedWriter(file_wrte);
        String CurrSourceLine = "";
        if(file_rd==null) return "Error : Passone output file not found";
        while((CurrSourceLine=buf_read.readLine())!=null){
            String token[] = CurrSourceLine.split("[ \t]+");
            if(token[0].length()==0){
                for(int i =0;i<3;i++){
                    file_wrte.write(" - ");
                }
                file_wrte.write('\n');
            }else{
               file_wrte.write(token[0]+" ");
               file_wrte.write(token[2]+" ");
               if(token.length==6 && token[4].equals("S")){
                System.out.println("Symbol Address : "+Symboltable[Integer.parseInt(token[5])].address);  
                file_wrte.write(Symboltable[Integer.parseInt(token[5])].address); // Error must be here 
               } 
               file_wrte.write('\n');
            }
        }
        file_wrte.close();
        file_rd.close();
        buf_read.close();
        return "Object code succesfully genrated";
    }

写入文件的字符是ç、í、Ò,而不是符号地址。我在这里做错了什么。

 -  -  - 
200 1 ç
201 3 í
202 7 í
203 8 
204 7 
205 5 
206 5 
207 5 ì
208 4 
209 6 Ò
210 10 Ò
210 10 ì
231 0 
234 5 
235 1 ì
236 1 
237 0 
239 2 

如果您使用 file_wrte.write(97);,它会将实际数字写入文件。当您在文本编辑器中打开文件时,97 是字符 'a'.

的 ACII 值

如果您想将 97 作为字符串写入文件,请使用 file_wrte.write(String.valueOf(97)); 这会将 57 55 写入文件,在 ASCII 中表示 97 字符串。

尝试: file_wrte.write(String.valueOf(Symboltable[Integer.parseInt(token[5])].address));

你已经在这里做了类似的事情file_wrte.write(token[0]+" "); 这里运算符 + 被重载了。
编译器将 String + object 翻译成 string.concat(object.toString())