Как мне запустить мое приложение для Android?

#java #android #crash

#java #Android #сбой

Вопрос:

Я пытаюсь создать приложение, которое проверяет буквенную оценку ученика. Пользователь выбирает имя учащегося из списка, и отображаются имя и буквенная оценка. Когда я пытаюсь запустить программу, я продолжаю получать сбои.

Вот мой Java-код:

 public class GradeChecker extends AppCompatActivity {
    //Variable and object declaration

    TextView name;

    TextView ltrGrade;
    Spinner spinner;
    int nameColor = getResources().getColor(R.color.name_color);
    int gradeColor = getResources().getColor(R.color.grade_color);
    float textSize = getResources().getDimension(R.dimen.textsize);

    BufferedReader reader;
    ArrayList<String> list = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grade_checker);
        //Object initialization

        name = (TextView) findViewById(R.id.displayName);
        ltrGrade = (TextView) findViewById(R.id.displayltrGrade);
        ltrGrade.setTextColor(gradeColor);
        ltrGrade.setTextSize(textSize);
        name.setTextSize(textSize);
        spinner = (Spinner)findViewById(R.id.spinner);

        //Read data from file
        try {
            AssetManager am = getAssets();
            InputStream input = am.open("grades.txt");
            reader = new BufferedReader(new InputStreamReader(input));
            String line = reader.readLine().replaceAll("Name", "").replaceAll("Test1", "").replaceAll("Test2", "").replaceAll("[0-9]]", "");
            while (line != null) {
                list.add(line);
            } input.close();

        } catch (IOException e) {
            name.setText("Student not found");
        }
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this,
                android.R.layout.simple_spinner_item);
        dataAdapter.notifyDataSetChanged();
        spinner.setAdapter(dataAdapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                //Reading data for spinner items
                try {
                    AssetManager am = getAssets();
                    InputStream input = am.open("grades.txt");
                    reader = new BufferedReader(new InputStreamReader(input));
                    String line = reader.readLine();
                    String na = reader.readLine().replaceAll("[0-9]", " ");
                    String gr = reader.readLine().replaceAll("[A-za-z]", " ");
                    String[] str = gr.split(" ");
                    int[] numbers = new int[str.length];
                    for (int x  = 0; x < numbers.length; x  ) {
                        numbers[x] = Integer.parseInt(str[i]);
                        Arrays.sort(numbers);
                    }
                    String total = Arrays.toString(numbers);
                    int avg = Integer.parseInt(total) / str.length;


                    while (line != null) {
                        name.setText(na);
                        if (avg >= 93) {
                            ltrGrade.setText("A");

                        }
                        if (avg >= 88 amp;amp; avg != 93) {
                            ltrGrade.setText("B ");
                        }
                        if (avg >= 83 amp;amp; avg != 88) {
                            ltrGrade.setText("B");
                        }
                        if (avg >= 78 amp;amp; avg != 83) {
                            ltrGrade.setText("C ");
                        }
                        if (avg >= 73 amp;amp; avg != 78) {
                            ltrGrade.setText("C");
                        }
                        if (avg >= 65 amp;amp; avg != 72) {
                            ltrGrade.setText("D");
                        }
                        if (avg < 65) {
                            ltrGrade.setText("F");
                        }

                    } input.close();

                } catch (IOException e) {
                    name.setText("Student not found");
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }
}
  

Буду признателен за любую помощь.

Комментарии:

1. Пожалуйста, поделитесь подробностями «сбоя», например, содержимым logcat.

2. Одна вещь, которая выскакивает, это Integer.parseInt(total) . Это не сработает, потому total что выглядит как [1, 2, 3, 4] , который не может быть представлен как целое число.

3. не могли бы вы опубликовать код пользовательского интерфейса xml?

4. Ваша логика присвоения оценки также неверна. Например, 95% — это «D», потому что оно больше 65% и не равно 72%. Большинство операторов «if» должны быть операторами «else if». Также неясно, почему вы делаете такие вещи, как «среднее значение! = 93» — полностью удалите эти условия, они бессмысленны.

5. @rajatIIT NumberFormatException не является IOException .