将质数保存到文件
Save prime number to file
我目前正在制作一个应用程序,可以找到越来越大的素数。当找到一个新的质数时,它将被保存到文件中。只需要存储最后找到的素数。用户应该能够查看此素数。当应用程序启动时,它将继续查看应用程序关闭时的位置。
但是我在找到将素数保存到文件的方法时遇到了问题??
public class MainActivity extends AppCompatActivity {
Button b;
int max = 500;
TextView vTextView;
int j = 2;
Button S;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
vTextView = (TextView) findViewById(R.id.textView1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = j; i <= max; i++) {
if (isPrimeNumber(i)) {
vTextView.setText(i+"");
j = i+1;
break;
}
}
}
});
}
public boolean isPrimeNumber(int number) {
for (int i = 2; i <= number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
写入文件:
public void writeToFile(String dataToWrite) {
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new
File(getFilesDir() + File.separator + "MyFile.txt")));
bufferedWriter.write(dataToWrite);
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
从文件中读取:
public String readFromFile() {
StringBuilder builder = new StringBuilder("");
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(new
File(getFilesDir() + File.separator + "MyFile.txt")));
String read;
while ((read = bufferedReader.readLine()) != null) {
builder.append(read);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
如果你可以使用SharedPreferences
,你可以这样做:
- 当您需要写入新文件时,读取存储在SharedPreferences 中的值。如果none,从0
开始
- 然后,增加检索到的值并使用它
- 之后,只需将新值存储在 SharedPreferences
如何阅读 SharedPreferences
SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences", Context.MODE_PRIVATE);
int index = prefs.getInt("file_index", 0);
SharedPreferences里怎么写
SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences", Context.MODE_PRIVATE);
prefs.edit().putInt("file_index", index).commit();
请注意,最好创建静态字符串而不是使用硬编码字符串。
有关 SharedPreferences 的更多详细信息:https://developer.android.com/training/data-storage/shared-preferences
我目前正在制作一个应用程序,可以找到越来越大的素数。当找到一个新的质数时,它将被保存到文件中。只需要存储最后找到的素数。用户应该能够查看此素数。当应用程序启动时,它将继续查看应用程序关闭时的位置。
但是我在找到将素数保存到文件的方法时遇到了问题??
public class MainActivity extends AppCompatActivity {
Button b;
int max = 500;
TextView vTextView;
int j = 2;
Button S;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
vTextView = (TextView) findViewById(R.id.textView1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = j; i <= max; i++) {
if (isPrimeNumber(i)) {
vTextView.setText(i+"");
j = i+1;
break;
}
}
}
});
}
public boolean isPrimeNumber(int number) {
for (int i = 2; i <= number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
写入文件:
public void writeToFile(String dataToWrite) {
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new
File(getFilesDir() + File.separator + "MyFile.txt")));
bufferedWriter.write(dataToWrite);
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
从文件中读取:
public String readFromFile() {
StringBuilder builder = new StringBuilder("");
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(new
File(getFilesDir() + File.separator + "MyFile.txt")));
String read;
while ((read = bufferedReader.readLine()) != null) {
builder.append(read);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
如果你可以使用SharedPreferences
,你可以这样做:
- 当您需要写入新文件时,读取存储在SharedPreferences 中的值。如果none,从0 开始
- 然后,增加检索到的值并使用它
- 之后,只需将新值存储在 SharedPreferences
如何阅读 SharedPreferences
SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences", Context.MODE_PRIVATE);
int index = prefs.getInt("file_index", 0);
SharedPreferences里怎么写
SharedPreferences prefs = getApplicationContext().getSharedPreferences("preferences", Context.MODE_PRIVATE);
prefs.edit().putInt("file_index", index).commit();
请注意,最好创建静态字符串而不是使用硬编码字符串。
有关 SharedPreferences 的更多详细信息:https://developer.android.com/training/data-storage/shared-preferences