我试图创建一个if语句,它看起来Edittext(数字)是否大于int值但它不起作用

时间:2017-09-18 17:06:15

标签: java android if-statement

当我尝试检查edittext(number)的输入是否小于int值时,它表示我无法比较<到EditText。我的值是一个int,输入是数字,我理解的是,int是一个数字。那么,为什么我不能比较它们呢? (如果这很容易解决,我不得不说我是Android开发的初学者)

代码:

package com.teamtreehouse.airport;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AirPortActivity extends AppCompatActivity {

    private EditText nameTextView;
    private  EditText inputNumberAge;

    private Button nextActivityButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_air_port);

        nameTextView = (EditText)findViewById(R.id.nameeditText);
        inputNumberAge = (EditText)findViewById(R.id.inputNumberAge);






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

        nextActivityButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Integer.parseInt(inputNumberAge.getText().toString()));
                String nameOfUser = nameTextView.getText().toString();
                int numberAge = 18;

                if (inputNumberAge > numberAge) {
                    Toast.makeText(AirPortActivity.this, "No Permission yet!", Toast.LENGTH_SHORT).show();
                }

                else




                startStory();
                String nameOfUserToast = "Hi " + nameOfUser;
                Toast.makeText(AirPortActivity.this, nameOfUserToast, Toast.LENGTH_SHORT).show();

            }
        });


    }

    private void startStory() {
        Intent intent = new Intent(this, AirPortSetup.class);
        startActivity(intent);
    }
}

3 个答案:

答案 0 :(得分:1)

您必须将解析后的值分配给int var,然后比较该var:

int parsedInt = Integer.parseInt(inputNumberAge.getText().toString()));

...

if (parsedInt > numberAge) {

Integer.parseInt()返回一个值,但是如果您没有将该值分配给正在解析的任何内容并浪费结果数据。希望有所帮助

答案 1 :(得分:1)

原因是您在if语句中比较不兼容的类型。 numberAgeint,而inputNumberAgeEditText。您可以在此行中的Integer创建inputNumberAge

    Integer.parseInt(inputNumberAge.getText().toString()));

但是,您没有将此值赋给变量,并且未在if语句中使用此值。尝试对上面的行和if语句

进行这些更改
public void onClick(View v) {
    int inputAge = Integer.parseInt(inputNumberAge.getText().toString()));
    String nameOfUser = nameTextView.getText().toString();
    int numberAge = 18;

    if (inputAge > numberAge) {

这将Integer的{​​{1}}值,并将其分配给名为inputNumberAge的变量。然后,if语句将此int值与inputAge值进行比较。

如果这有帮助,或者您需要进一步澄清,请告诉我。

答案 2 :(得分:0)

你需要将数字存储在整数变量中并使用try和catch来检查用户是否输入了整数

        int val;
         try
            {
               val = Integer.parseInt(inputNumberAge.getText().toString()));            
            }catch (IOException e)
            {
               Toast.makeText(AirPortActivity.this, "Only integer value", Toast.LENGTH_SHORT).show();
                return;
            }

             String nameOfUser = nameTextView.getText().toString();
             int numberAge = 18;

             if (val> numberAge) {
                   Toast.makeText(AirPortActivity.this, "No Permission yet!", Toast.LENGTH_SHORT).show();
                    }