2014-09-26 2 views
0

Я часто бываю здесь, чтобы найти ссылки и помощь, чтобы выполнить мои задания для школы. Я начинаю программировать на Java вместе с Eclipse и Android. Однако у меня есть программа на C++, PL/SQL и HTML, поэтому я понимаю некоторые основные правила программирования. До этого момента программа запускается, однако, когда я создаю намерение и передаю данные для вычисления GPA, он выходит из строя. Я ищу его буквально в течение нескольких часов, и я не могу найти проблему. Любая помощь будет оценена по достоинству. Заранее спасибо!Приложение для Android Сбой после передачи данных

package com.example.gpacalculator; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class SecondActivity extends Activity implements OnClickListener { 

    private Button buttonGoback; 
    private double gpa=0.0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 

     Bundle secondBundle = getIntent().getExtras(); 

     buttonGoback = (Button) findViewById(R.id.buttonReturn); 
     buttonGoback.setOnClickListener(this); 

     int idGrades[] = getLetterIds(); 

     String grade; 
     int hour; 

     String[] grades = new String[2]; 
     int[] hours = new int[2]; 

     for (int i=0; i < 1; i++) 
      { 

       grade = secondBundle.getString("grade_"+i); 
       grades[i]=grade; 

       hour = secondBundle.getInt("hourse_"+i,3); 
       hours[i] =hour; 

      } 

     gpa = calculateGPA(grades, hours); 

    } 

    public void onClick(View v) 
    { 
     TextView results = (TextView) findViewById(R.id.textview_output); 
     String temp = String.valueOf(gpa); 
     results.setText(temp); 

    } 

    double calculateGPA(String[] grades,int[] hours) 
    { 
     double gpa=0.0d; 
     int totalHours=0; 
     for (int i=0; i < grades.length; i++) 
     { 
      totalHours += hours[i]; 

      if(grades[i].toUpperCase().equals("A")) 
       gpa += 4.0 * hours[i]; 
      if(grades[i].toUpperCase().equals("B")) 
       gpa += 3.0 * hours[i]; 
      if(grades[i].toUpperCase().equals("C")) 
       gpa += 2.0 * hours[i]; 
      if(grades[i].toUpperCase().equals("D")) 
       gpa += 1.0 * hours[i]; 
      if(grades[i].toUpperCase().equals("D")) 
       gpa += 0.0 * hours[i]; //redundant! 

     } 
     gpa = gpa /totalHours; 

     return gpa; 
    } 

    public int[] getLetterIds() 
    { 

     int[] LetterIds = new int[10]; 

     LetterIds[0] = R.id.edittext_course1; 
     LetterIds[1] = R.id.edittext_course2; 
     LetterIds[2] = R.id.edittext_course3; 
     LetterIds[3] = R.id.edittext_course4; 
     LetterIds[4] = R.id.edittext_course5; 
     LetterIds[5] = R.id.edittext_course6; 
     LetterIds[6] = R.id.edittext_course7; 
     LetterIds[7] = R.id.edittext_course8; 
     LetterIds[8] = R.id.edittext_course9; 
     LetterIds[9] = R.id.edittext_course10; 

     return LetterIds; 
    } 
} 

Вот код для первого действия:

package com.example.gpacalculator; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
public class MainActivity extends Activity implements OnClickListener { 

    private Button buttonStart; 
    private int GPA_CODE=1001; 

    public int[] getLetterIds() { 

     int[] LetterIds = new int[10]; 

     LetterIds[0] = R.id.edittext_course1; 
     LetterIds[1] = R.id.edittext_course2; 
     LetterIds[2] = R.id.edittext_course3; 
     LetterIds[3] = R.id.edittext_course4; 
     LetterIds[4] = R.id.edittext_course5; 
     LetterIds[5] = R.id.edittext_course6; 
     LetterIds[6] = R.id.edittext_course7; 
     LetterIds[7] = R.id.edittext_course8; 
     LetterIds[8] = R.id.edittext_course9; 
     LetterIds[9] = R.id.edittext_course10; 

     return LetterIds; 
    } 

    public int[] getHoursIds() { 

     int[] HoursIds = new int[10]; 

     HoursIds[0] = R.id.edittext_hrs1; 
     HoursIds[1] = R.id.edittext_hrs2; 
     HoursIds[2] = R.id.edittext_hrs3; 
     HoursIds[3] = R.id.edittext_hrs4; 
     HoursIds[4] = R.id.edittext_hrs5; 
     HoursIds[5] = R.id.edittext_hrs6; 
     HoursIds[6] = R.id.edittext_hrs7; 
     HoursIds[7] = R.id.edittext_hrs8; 
     HoursIds[8] = R.id.edittext_hrs9; 
     HoursIds[9] = R.id.edittext_hrs10; 

     return HoursIds; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     buttonStart = (Button) findViewById(R.id.buttonstart); 
     buttonStart.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     //Toast.makeText(this, "Test", Toast.LENGTH_LONG).show(); 

     Bundle firstBundle = new Bundle(); 

     int letterarray[]= getLetterIds(); 
     int hourarray[]= getHoursIds(); 

     String gradestr; 
     int hours; 

     for (int i = 0; i < 1; i++) 
     { 
      gradestr = ((EditText) findViewById(letterarray[i])).getText().toString(); 
      hours = Integer.parseInt(((EditText) findViewById(hourarray[i])) 
        .getText().toString()); 
      firstBundle.putString("grade_" + i, gradestr); 
      firstBundle.putInt("hours_" + i, hours); 

     } 

     Intent firstIntent = new Intent(this, SecondActivity.class); 
     firstIntent.putExtras(firstBundle); 

     startActivity(firstIntent); 

    } 


} 

И журнал ошибок:

09-26 17:22:38.350: E/AndroidRuntime(29097): FATAL EXCEPTION: main 
09-26 17:22:38.350: E/AndroidRuntime(29097): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gpacalculator/com.example.gpacalculator.SecondActivity}: java.lang.NullPointerException 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread.access$600(ActivityThread.java:132) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.os.Looper.loop(Looper.java:137) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread.main(ActivityThread.java:4575) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at java.lang.reflect.Method.invokeNative(Native Method) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at java.lang.reflect.Method.invoke(Method.java:511) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at dalvik.system.NativeStart.main(Native Method) 
09-26 17:22:38.350: E/AndroidRuntime(29097): Caused by: java.lang.NullPointerException 
09-26 17:22:38.350: E/AndroidRuntime(29097): at com.example.gpacalculator.SecondActivity.calculateGPA(SecondActivity.java:66) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at com.example.gpacalculator.SecondActivity.onCreate(SecondActivity.java:46) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.Activity.performCreate(Activity.java:4465) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
09-26 17:22:38.350: E/AndroidRuntime(29097): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033) 
09-26 17:22:38.350: E/AndroidRuntime(29097): ... 11 more 
+1

StackTrace от аварии будет ** ** удивительным правы сейчас – codeMagic

+0

Разместить свои журналы, и какие намерения ? Все, что я вижу, это вызов метода для вычисления gpa. Отправьте свои журналы, пожалуйста. – portfoliobuilder

+0

Этот for-loop выглядит нечетным 'for (int i = 0; i <1; i ++)' – cYrixmorten

ответ

0

После

for (int i=0; i < 1; i++) 
    { 
     grade = secondBundle.getString("grade_"+i); 
     grades[i]=grade; 

     hour = secondBundle.getInt("hourse_"+i,3); 
     hours[i] =hour; 

    } 

класса [1] не инициализируется ,

По строке 66, оценки [1] являются нулевыми.

Попробуйте изменить строку 35, чтобы для (INT I = 0; я < grades.length, я ++)

Смежные вопросы