我正在努力制作这个计算你的平均成绩的应用程序(基于瑞典等级系统),我已经制作了图形布局并在eclipse中编写了我认为正确的java代码,但是当我尝试启动它时在模拟器中它不会工作。该应用程序启动,但它只是一个黑屏。这是我的第一个应用程序和我的第一个编程项目,所以我真的不知道我做错了什么。
它应该是三个edittexts,你把你的点数与一个等级(我们有三个等级),然后它应该将点数乘以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):未捕获的处理程序:由于未捕获的异常导致主线程退出 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):at java.lang.reflect.Method.invokeNative(Native Method) 02-05 17:07:06.194:E / AndroidRuntime(1230):at java.lang.reflect.Method.invoke(Method.java:521) 02-05 17:07:06.194:E / AndroidRuntime(1230):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:782) 02-05 17:07:06.194:E / AndroidRuntime(1230):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 02-05 17:07:06.194:E / AndroidRuntime(1230):at dalvik.system.NativeStart.main(Native Method) 02-05 17:07:06.194:E / AndroidRuntime(1230):引起:java.lang.NumberFormatException: 02-05 17:07:06.194:E / AndroidRuntime(1230):at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:258) 02-05 17:07:06.194:E / AndroidRuntime(1230):at java.lang.Double.parseDouble(Double.java:323) 02-05 17:07:06.194:E / AndroidRuntime(1230):at 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):在android.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):从ADB接收文件描述符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:未定义处理程序
答案 0 :(得分:1)
您获得了NumberFormatException
,因为在您创建Activity
(onCreate()
方法)时,您已尝试解析EditText
中的文字(您有emty text {{虽然您还没有输入任何数字,但是尝试将其解析为""
将会Double
。您必须移动用于计算按钮Exception
上的成绩的代码,如下所示:
OnCLickListener