Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 某些字符正在保存到文本文件中,而不是生成的随机数_Java_Android_File_Random - Fatal编程技术网

Java 某些字符正在保存到文本文件中,而不是生成的随机数

Java 某些字符正在保存到文本文件中,而不是生成的随机数,java,android,file,random,Java,Android,File,Random,我正在构建一个移动应用程序,我必须将生成的随机数保存到一个.txt文件中。下面你可以看到我的代码。当我执行它时,.txt文件存储一些字符而不是数字。我不熟悉这个文件的概念。请帮忙 public class MainActivity extends Activity { int[] arr = new int[100]; @Override protected void onCreate(Bundle savedInstanceState) { supe

我正在构建一个移动应用程序,我必须将生成的随机数保存到一个.txt文件中。下面你可以看到我的代码。当我执行它时,.txt文件存储一些字符而不是数字。我不熟悉这个文件的概念。请帮忙

public class MainActivity extends Activity {

    int[] arr = new int[100];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // TODO Auto-generated method stub  
        try {
            File sdcard = Environment.getExternalStorageDirectory();
            File directory = new File(sdcard.getAbsolutePath() + "/MyDirectory");
            directory.mkdirs();
            File file = new File(directory, "textfile.txt");
            FileOutputStream fou = new FileOutputStream(file);
            OutputStreamWriter osw = new OutputStreamWriter(fou);
            try {
                for (int i = 0; i < 10; i++) {
                    Random r = new Random();
                    int c = r.nextInt(100);
                    arr[i] = c;
                    osw.write(c);
                }
                osw.close();
                Toast.makeText(getBaseContext(), "Data saved", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }

}  
公共类MainActivity扩展活动{
int[]arr=新int[100];
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//TODO自动生成的方法存根
试一试{
文件sdcard=Environment.getExternalStorageDirectory();
文件目录=新文件(sdcard.getAbsolutePath()+“/MyDirectory”);
mkdirs()目录;
File File=新文件(目录“textfile.txt”);
FileOutputStream fou=新的FileOutputStream(文件);
OutputStreamWriter osw=新的OutputStreamWriter(fou);
试一试{
对于(int i=0;i<10;i++){
随机r=新随机();
int c=r.nextInt(100);
arr[i]=c;
osw.write(c);
}
osw.close();
Toast.makeText(getBaseContext(),“数据已保存”,Toast.LENGTH_LONG.show();
}捕获(IOE异常){
e、 printStackTrace();
}
}catch(filenotfounde异常){
e、 printStackTrace();
}
}
}  
//arr[i]用于我项目的后期


如果有人帮助我,帮助我改正错误,我会很高兴

writer
使用
write(int c)
从索引为
c
的Unicode表中写入字符

您感兴趣的是编写表示数字的字符串,如
“123”
,因此首先将其转换为字符串,然后使用
编写(字符串s)
方法

所以不是

osw.write(c); 
使用

或者你甚至可以用
PrintWriter
包装你的书写器,它有
print
println
(类似于
System.out.println
)这样你就可以使用

yourPrintWriter.print(c);
编辑:

如果需要在新行中打印每个数字,则需要在其后面打印行分隔符。尝试添加

osw.write(System.lineSeparator());

在打印每个数字后,或者使用
PrintWriter
中的
println
方法,我需要得到1乘1的数字。我的意思是增加一条新的线路。例如,如果数字s生成123,我需要在下一行2和第三行3保存1。如何添加新行?@user3335796在这种情况下,请使用
println
而不是
print
@user3335796抱歉响应太晚。看看我最新的答案。谢谢你们的帮助,也谢谢你们提供关于“如何接受答案”的信息。它的信息量很大。:-)
osw.write(System.lineSeparator());