Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下按钮时应用程序崩溃_Java_Android_Nullpointerexception - Fatal编程技术网

Java 按下按钮时应用程序崩溃

Java 按下按钮时应用程序崩溃,java,android,nullpointerexception,Java,Android,Nullpointerexception,大家好,我是新来的,这是我的第一篇帖子 我想构建我的第一个android应用程序,确切地说,这将是一个GPA计算器,但每次我按下计算按钮,应用程序崩溃,我使用android studio,下面是java代码 package com.example.mac.gpacalculator; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.suppor

大家好,我是新来的,这是我的第一篇帖子

我想构建我的第一个android应用程序,确切地说,这将是一个GPA计算器,但每次我按下计算按钮,应用程序崩溃,我使用android studio,下面是java代码

package com.example.mac.gpacalculator;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

TextView result;
EditText grade1;
EditText grade2;
EditText grade3;
EditText grade4;
EditText grade5;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    result=(TextView) findViewById(R.id.total);
    grade1=(EditText)findViewById(R.id.num1);
    grade2=(EditText)findViewById(R.id.num2);
    grade3=(EditText)findViewById(R.id.num3);
    grade4=(EditText)findViewById(R.id.num4);
    grade5=(EditText)findViewById(R.id.num5);

    final Button calcbtn= (Button) findViewById(R.id.calc);
    calcbtn.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            double c1 = Float.parseFloat(grade1.getText().toString());
            c1=convert(String.valueOf(grade1));

            double c2 = Float.parseFloat(grade2.getText().toString());
            c1=convert(String.valueOf(grade2));

            double c3 = Float.parseFloat(grade3.getText().toString());
            c1=convert(String.valueOf(grade3));

            double c4 = Float.parseFloat(grade4.getText().toString());
            c1=convert(String.valueOf(grade4));

            double c5 = Float.parseFloat(grade5.getText().toString());
            c1=convert(String.valueOf(grade5));
            double c6=calculation(c1,c2,c3,c4,c5);
            result.setText((int) c6);

        }


    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
public static double convert(String grade)
{
    double a=0.0;
    //checking the conditions

    if(grade.equalsIgnoreCase("A"))
    {
        a=4.0;
    }
    if(grade.equalsIgnoreCase("A-"))
    {
        a=3.7;
    }
    if(grade.equalsIgnoreCase("B+"))
    {
        a=3.3;
    }
    else if(grade.equalsIgnoreCase("B"))
    {
        a=3.0;
    }
    if(grade.equalsIgnoreCase("B-"))
    {
        a=2.7;
    }
    if(grade.equalsIgnoreCase("C+"))
    {
        a=2.3;
    }
    else if(grade.equalsIgnoreCase("C"))
    {
        a=2.0;
    }
    if(grade.equalsIgnoreCase("C-"))
    {
        a=1.7;
    }
    if(grade.equalsIgnoreCase("D+"))
    {
        a=1.3;
    }
    else if(grade.equalsIgnoreCase("D"))
    {
        a=1.0;
    }
    else if(grade.equalsIgnoreCase("F"))
    {
        a=0.0;
    }


    return a;

}
public static double calculation(double c1, double c2, double c3, double c4, double c5)
{
    double operation;
    operation=(c1+c2+c3+c4+c5)/5;//calculating the GPA
    return operation;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}
这是XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.mac.gpacalculator.MainActivity"
tools:showIn="@layout/activity_main">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num4"
    android:layout_below="@+id/num3"
    android:layout_alignStart="@+id/num3"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num5"
    android:layout_below="@+id/num4"
    android:layout_alignStart="@+id/num4"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num2"
    android:layout_below="@+id/num1"
    android:layout_alignStart="@+id/num1"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num3"
    android:inputType="text"
    android:textAlignment="center"
    android:hint="Grade"
    android:layout_below="@+id/num2"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:layout_alignStart="@+id/num2" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num1"
    android:hint="Grade"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:layout_marginTop="49dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:inputType="text" />

<Button
    android:text="CALCULATE"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/calc"
    android:layout_marginTop="24dp"
    android:layout_below="@+id/num5"
    android:layout_centerHorizontal="true"
    android:onClick="calculation"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:id="@+id/total"
    android:hint="0"
    android:layout_below="@+id/calc"
    android:layout_centerHorizontal="true"
    android:textSize="50sp" />

</RelativeLayout>

您必须有
按钮btn=(按钮)findViewById(R.id.Button)
否则您将抛出一个
NullPointerException
。检查android监视器以查看是否与错误匹配。

您已在XML
标记中添加了
android:onClick=“calculation”
,因此请定义一个名为calculation的方法,该方法接受代码中的视图

或者简单地使用calcbtn.setOnClickListener。。。在您的代码中,从按钮标签中删除android:onClick=“calculation”

不要对同一视图同时使用android:onClick=“calculation和
view.setOnClick


XML中没有名为
fab
的id,因此请添加一个
FloatingActionButton
并将该id提供给它或注释
FloatingActionButton fab..};

我在这里看到多个错误:

  • 正如@charuka所回答的,您在android:onClick=“calculation按钮中添加了一个方法,android找不到该方法并导致崩溃

  • 您正在尝试将
    EditText
    解析为
    String
    ,它不是
    String
    ,此处:
    convert(String.valueOf(grade1)),将其更改为
    convert(grade1.getText().toString())


发布您的崩溃日志honey XOXo和哪个按钮??开始学习您正在尝试将字符串转换为数字我确实有按钮calcbtn=(按钮)findViewById(R.id.calc)@Ara Kawa你解决问题了吗?
FATAL EXCEPTION: main
              Process: com.example.mac.gpacalculator, PID: 2327
              java.lang.NumberFormatException: empty String
                  at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
                  at java.lang.Float.parseFloat(Float.java:459)
                  at com.example.mac.gpacalculator.MainActivity$2.onClick(MainActivity.java:51)
                  at android.view.View.performClick(View.java:5637)
                  at android.view.View$PerformClick.run(View.java:22429)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6119)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Application terminated.