当我尝试检查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);
}
}
答案 0 :(得分:1)
您必须将解析后的值分配给int var,然后比较该var:
int parsedInt = Integer.parseInt(inputNumberAge.getText().toString()));
...
if (parsedInt > numberAge) {
Integer.parseInt()返回一个值,但是如果您没有将该值分配给正在解析的任何内容并浪费结果数据。希望有所帮助
答案 1 :(得分:1)
原因是您在if语句中比较不兼容的类型。 numberAge
是int
,而inputNumberAge
是EditText
。您可以在此行中的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();
}