Приложение Gradeaverage не запускается - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь сделать это приложение, которое вычисляет ваш средний балл (на основе шведской системы оценок), и я сделал графический макет и написал код Java в Eclipse, который я считаю правильным, но когда я пытаюсь запустить егов эмуляторе это не сработает.Приложение запускается, но его только черный экран.Это мое первое приложение и мой первый проект по программированию, так что я действительно не знаю, что я сделал неправильно.

Предполагается, что это три этапа редактирования, в которые вы кладете количество баллов, которое вы получили, с определенной оценкой (у нас есть три оценки), а затем следует умножить баллы на 10, 15 или 20 в зависимости от того, какая это оценка, а затем разделить на общее количество баллов.Я не знаю, имеет ли это смысл, но максимальная оценка должна быть 20 (все mvgs).Я сделал похожее приложение на C #, и оно работает, но я предполагаю, что дела обстоят немного иначе, когда дело доходит до Android и Java.

package com.dlol.gradeaverage;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class GradeaverageActivity extends Activity {

EditText editText1, editText2, editText3;
String gtext, vgtext, mvgtext, str;
Double gpoäng, vgpoäng, mvgpoäng;
Double gvärde, vgvärde, mvgvärde;
Double allapoäng, allavärde;
Double snittbetyg;
Button button1;



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);    

 editText1 = (EditText)findViewById(R.id.editText1); 
 editText2 = (EditText)findViewById(R.id.editText2); 
 editText3 = (EditText)findViewById(R.id.editText3); 

 gtext = editText1.getText().toString();
 vgtext = editText2.getText().toString();
 mvgtext = editText3.getText().toString();

 gpoäng = Double.parseDouble(gtext);
 vgpoäng = Double.parseDouble(vgtext);
 mvgpoäng = Double.parseDouble(mvgtext);

 gvärde = gpoäng*10;
 vgvärde = vgpoäng*15;
 mvgvärde = mvgpoäng*20;

 allapoäng = (gpoäng + vgpoäng + mvgpoäng);
 allavärde = (gvärde + vgvärde + mvgvärde);

 snittbetyg = (allavärde / allapoäng);
 str = "Ditt snitt är " + snittbetyg;

 button1 = (Button)findViewById(R.id.button1);  

 button1.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
         Toast.makeText(getBaseContext(), str,
                 Toast.LENGTH_SHORT).show();
     }
});
}}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/info_text_G" 
    android:textSize="16sp">
</TextView>

<EditText 
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="text">        
</EditText>/

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/info_text_VG" 
    android:textSize="16sp" />

 <EditText 
    android:id="@+id/editText2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="text">        
</EditText>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/info_text_MVG" 
    android:textSize="16sp">        
</TextView>

<EditText 
    android:id="@+id/editText3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="text">        
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/Button" />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, GradeaverageActivity!</string>
<string name="app_name">Gradeaverage</string>
<string name="info_text_G">Skriv in antal G-poäng</string>
<string name="info_text_VG">Skriv in antal VG-poäng</string>
<string name="info_text_MVG">Skriv in antal MVG-poäng</string>
<string name="Button">Räkna ut snitt!</string>
</resources>

02-05 17: 07: 06.184: D / AndroidRuntime (1230): завершение работы VM 02-05 17: 07: 06.184: W / dalvikvm (1230): threadid = 3: выход из потока за исключением необработанного исключения (группа = 0x4000fe70) 02-05 17: 07: 06.184: E / AndroidRuntime (1230): Обработчик Uncaught: выход основного потока из-за непредвиденного исключения 02-05 17: 07: 06.194: E / AndroidRuntime (1230): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.dlol.gradeaverage / com.dlol.gradeaverage.GradeaverageActivity}: java.lang.NumberFormatException: 02-05 17: 07: 06.194: E / AndroidRuntime (1230): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2268) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2284) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на android.app.ActivityThread.access $ 1800 (ActivityThread.java: 112) 02-05 17:07:06.194: E / AndroidRuntime (1230): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1692) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на android.os.Handler.dispatchMessage(Handler.java:99) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на android.os.Looper.loop (Looper.java:123) 02-05 17: 07: 06.194: E / AndroidRuntime(1230): в android.app.ActivityThread.main (ActivityThread.java:3948) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): в java.lang.reflect.Method.invokeNative (собственный метод) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): по адресу java.lang.reflect.Method.invoke (Method.java:521) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): по адресу.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:782) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на com.android.internal.os.ZygoteInit.main (ZygoteInit.Java: 540) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): at dalvik.system.NativeStart.main (собственный метод) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): вызвано: java.lang.NumberFormatException: 02-05 17: 07: 06.194: E / AndroidRuntime (1230): в org.apache.harmony.luni.util.FloatingPointParser.parseDouble (FloatingPointParser.java:258) 02-05 17: 07: 06.194: E /AndroidRuntime (1230): в java.lang.Double.parseDouble (Double.java:323) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): в com.dlol.gradeaverage.GradeaverageActivity.onCreate (GradeaverageActivity.java: 37) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1123) 02-05 17: 07: 06.194: E / AndroidRuntime (1230):atroid.app.ActivityThread.performLaunchActivity (ActivityThread.java:2231) 02-05 17: 07: 06.194: E / AndroidRuntime (1230): ... еще 11 02-05 17: 07: 06.225: I / dalvikvm (1230): threadid = 7: реагирование на сигнал 3 02-05 17: 07: 06.244: I / dalvikvm (1230): записал трассировку стека в '/data/anr/traces.txt' 02-05 17: 07: 06.344: I/ jdwp (1230): получен дескриптор файла 24 от АБР 02-05 17: 07: 06.354: W / System.err (1230): не удается отправить блок DDM 46454154: не определен обработчик 02-05 17:07:06.354: W / System.err (1230): не удается отправить блок DDM 4d505251: не определен обработчик

1 Ответ

1 голос
/ 05 февраля 2012

Вы получаете NumberFormatException, потому что когда вы создаете Activity (onCreate() метод), вы уже пытаетесь проанализировать текст из EditText (у вас есть пустой текст "" и пытаетесь разобрать его в Double выдаст Exception), хотя вы еще не ввели числа.Вы должны переместить код для расчета оценок на кнопке OnCLickListener следующим образом:

   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    

     editText1 = (EditText)findViewById(R.id.editText1); 
     editText2 = (EditText)findViewById(R.id.editText2); 
     editText3 = (EditText)findViewById(R.id.editText3); 

     button1 = (Button)findViewById(R.id.button1);  

     button1.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
    gtext = editText1.getText().toString();
     vgtext = editText2.getText().toString();
     mvgtext = editText3.getText().toString();

     gpoäng = Double.parseDouble(gtext);
     vgpoäng = Double.parseDouble(vgtext);
     mvgpoäng = Double.parseDouble(mvgtext);

     gvärde = gpoäng*10;
     vgvärde = vgpoäng*15;
     mvgvärde = mvgpoäng*20;

     allapoäng = (gpoäng + vgpoäng + mvgpoäng);
     allavärde = (gvärde + vgvärde + mvgvärde);

     snittbetyg = (allavärde / allapoäng);
     str = "Ditt snitt är " + snittbetyg;
             Toast.makeText(getBaseContext(), str,
                     Toast.LENGTH_SHORT).show();
         }
    });
    }
...