Мое приложение по какой-то причине вылетает при попытке найти значения Max и Min внутри массива. Раньше это работало, но теперь я сделал так, чтобы данные сохранялись в файле. Нужны ли для работы функции дополнительные параметры?
public class MainActivity extends AppCompatActivity {
ArrayList<String> pavardes = new ArrayList<String>();
ArrayList<Integer> amziai = new ArrayList<Integer>();
ArrayList<String> issilavinimai = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView rez = findViewById(R.id.rez);
rez.setText("");
try {
FileInputStream fis = openFileInput("Karnauskas.12");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
String[] mas = line.split(" - ");
if (mas.length == 3) {
pavardes.add(mas[0]);
amziai.add(Integer.parseInt(mas[1]));
issilavinimai.add(mas[2]);
}
}
} catch (Exception e) {
rez.setText("Klaida");
}
}
public void saugoti(View v) {
EditText pavard = findViewById(R.id.pavarde);
pavardes.add(pavard.getText().toString());
EditText amz = findViewById(R.id.amzius);
amziai.add(Integer.parseInt(amz.getText().toString()));
Spinner issilav = findViewById(R.id.issilavinimas);
issilavinimai.add(issilav.getSelectedItem().toString());
TextView rez = findViewById(R.id.rez);
rez.setText("Išsaugota");
pavard.setText("");
amz.setText("");
issilav.setSelection(1);
}
public void kitasLangas(View v) {
Intent duom = new Intent(this, langas2.class);
duom.putStringArrayListExtra("pavardes", pavardes);
duom.putIntegerArrayListExtra("amziai", amziai);
duom.putStringArrayListExtra("issilavinimai", issilavinimai);
startActivity(duom);
}
public void skaiciuoti(View v){
int min = 999;
int max = 0;
String min_pavarde = "";
String min_issilavinimas = "";
String max_pavarde = "";
String max_issilavinimas = "";
TextView rez = findViewById(R.id.rez2);
if (amziai.isEmpty()){
rez.setText("No data");
} else {
for (int i = 0; i < amziai.size(); i++) {
if (min > amziai.get(i)) {
min = amziai.get(i);
min_pavarde = pavardes.get(i);
min_issilavinimas = issilavinimai.get(i);
}
if (max < amziai.get(i)) {
max = amziai.get(i);
max_pavarde = pavardes.get(i);
max_issilavinimas = issilavinimai.get(i);
}
}
rez.setText("MIN: "+min_pavarde+" "+min+" "+min_issilavinimas+"\n");
rez.append("MAX: "+max_pavarde+" "+max+" "+max_issilavinimas+"\n");
}
}
public void valyti(View v) {
pavardes.clear();
amziai.clear();
issilavinimai.clear();
TextView rez = findViewById(R.id.rez);
rez.setText("Išvalyta");
}
@Override
protected void onStop() {
super.onStop();
TextView rez = findViewById(R.id.rez);
try {
FileOutputStream fos = openFileOutput("Karnauskas.12", Context.MODE_PRIVATE);
for(int i = 0; i < pavardes.size(); i++){
String eilute = pavardes.get(i)+" - "+amziai.get(i)+ " - "+issilavinimai.get(i)+"\n";
fos.write(eilute.getBytes());
}
fos.close();
rez.setText("Išsaugota");
} catch (FileNotFoundException e) {
rez.setText("Klaida 1");
} catch (IOException e) {
rez.setText("Klaida 2");
}
}
Я предполагаю, что проблема в разделе @override, поскольку удаление этой части больше не приводит к тому, что приложение создает sh, а min / max просто выдает «Нет данных», но затем любая другая кнопка вылетает из приложения. Буду очень признателен за помощь!