Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Android 年度比较工具的逻辑错误_Android_Date_If Statement_Logic - Fatal编程技术网

Android 年度比较工具的逻辑错误

Android 年度比较工具的逻辑错误,android,date,if-statement,logic,Android,Date,If Statement,Logic,我试图创建一个工具,将当前年份与事件发生的年份进行比较,然后允许用户猜测事件发生后的年份。例如,首届FRC锦标赛于1992年举行。本年度为2015年。用户猜测它发生在23年前,这是正确的 所以,在我看来,代码应该是这样的 public class Credits extends Activity { int inaugural = 1992; int guess; int differenceInYears; Calendar calendar = Calen

我试图创建一个工具,将当前年份与事件发生的年份进行比较,然后允许用户猜测事件发生后的年份。例如,首届FRC锦标赛于1992年举行。本年度为2015年。用户猜测它发生在23年前,这是正确的

所以,在我看来,代码应该是这样的

  public class Credits extends Activity {
    int inaugural = 1992;
    int guess;
    int differenceInYears;
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int output;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_credits);
        final EditText yearGuess=(EditText)findViewById(R.id.txtYearGuess);
        Button go = (Button)findViewById(R.id.btnCalculate);
        final TextView result = ((TextView)findViewById(R.id.txtResult));
        go.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int userGuess= Integer.parseInt(yearGuess.getText().toString());
                differenceInYears = year - inaugural;
                output = userGuess - differenceInYears;

                if (output < 1) {
                    result.setText("Guess again! You guessed too low!");
                }

                else if (output == 1) {
                    result.setText("You're REALLY close!");

                }

                else if (output == -1) {
                    result.setText("You're REALLY close!");

                }

                else if (output > 1) {
                    result.setText("Guess again! You guessed too high!");

                }

                else {
                    result.setText("Good job! You're an FRC Genious!");

                }
            }

        });
     }
    }
公共课学分扩展活动{
国际就职=1992年;
智力猜测;
内异耳;
日历=Calendar.getInstance();
int year=calendar.get(calendar.year);
整数输出;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_学分);
最终EditText yearGuess=(EditText)findViewById(R.id.txtYearGuess);
按钮go=(按钮)findViewById(R.id.btnCalculate);
最终TextView结果=((TextView)findViewById(R.id.txtResult));
go.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
int userGuess=Integer.parseInt(yearGuess.getText().toString());
DifferenceInEars=年份-成立;
输出=userGuess-DifferenceInEars;
如果(输出<1){
result.setText(“再猜一次!你猜得太低了!”);
}
else if(输出==1){
result.setText(“你们真的很接近!”);
}
else if(输出==-1){
result.setText(“你们真的很接近!”);
}
else if(输出>1){
result.setText(“再猜一次!你猜得太高了!”);
}
否则{
result.setText(“干得好!你是FRC的天才!”);
}
}
});
}
}

…但是,测试时,这些值仍然错误。我错过了什么?我的数学有问题吗?还是密码?或者两者都有?

这与if语句的逻辑有关。当用户正确猜测时,“输出”应等于0,这将被第一个条件捕获。

简单逻辑错误

if (output < 1) {
                    result.setText("Guess again! You guessed too low!");
                }
if(输出<1){
result.setText(“再猜一次!你猜得太低了!”);
}
应该是

if (output < -1) {
                    result.setText("Guess again! You guessed too low!");
                }
if(输出<-1){
result.setText(“再猜一次!你猜得太低了!”);
}

只是忘了将低比较设为负数。

是的。我刚才通过使用调试变量探测工具也意识到了这一点。我甚至不知道有这样的工具存在,直到我不小心点击了它。谢谢