java - Gradeaverage 应用程序无法启动

标签 java android eclipse emulation average

我正在尝试制作这个应用程序来计算你的平均成绩(基于瑞典成绩系统),并且我已经制作了图形布局并在 Eclipse 中编写了我认为正确的 Java 代码,但是当我尝试启动它时在模拟器中它不起作用。应用程序启动,但只是黑屏。这是我的第一个应用程序和我的第一个编程项目,所以我真的不知道我做错了什么。

它应该是三个编辑文本,您可以在其中输入特定等级的分数(我们有三个等级),然后根据等级将分数乘以 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):关闭虚拟机 02-05 17:07:06.184: W/dalvikvm(1230): threadid=3: 线程因未捕获的异常而退出 (group=0x4000fe70) 02-05 17:07:06.184:E/AndroidRuntime(1230):未捕获的处理程序:由于未捕获的异常,线程主退出 02-05 17:07:06.194:E/AndroidRuntime(1230):java.lang.RuntimeException:无法启动 Activity 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( native 方法) 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): 在 com.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):在dalvik.system.NativeStart.main( native 方法) 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):在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 使用react 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): 无法分派(dispatch) DDM block 46454154: 未定义处理程序 02-05 17:07:06.354: W/System.err(1230): 无法分派(dispatch) DDM block 4d505251: 未定义处理程序

最佳答案

您会得到 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();
         }
    });
    }

关于java - Gradeaverage 应用程序无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149849/

相关文章:

java - 创建后如何从项目中删除 jax-ws webservice

java - 如何在网络收获中从字符串中减去子字符串

java - 最新的 Android Studio 3.6.3 在 Windows 10 中安装后无法运行

Android 风格+构建类型特定的依赖项

android - 从 guest 操作系统访问本地主机

java - 如何在eclipse中执行可运行的jar文件

Eclipse Kepler 无法通过代理连接到互联网

java - 如何通过在java中迭代3个不同的列表对象来向列表对象添加元素?

Java - 同一 View 上的两个不同的 @ModelAttribute 占用相同的值

java - 正则表达式从字符串中获取第三个元素