我正在尝试通过Android Atudio开发一个Android应用来计算该人的年龄。该应用程序运行时没有语法错误,但计算中出现了逻辑错误,日期为1996年12月7日,-年数和月数错误。
当我输入日期1997/6/12时,结果为23年11个月零6天,而预期结果为24年0个月零6天。
package com.example.helloworldapp;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
public void BtnClicked(View BtnView) {
EditText year = findViewById(R.id.year);
EditText month = findViewById(R.id.moth);
EditText day = findViewById(R.id.day);
TextView result = findViewById(R.id.TV);
int differanceOfYears = Calendar.getInstance().get(Calendar.YEAR) - Integer.parseInt(year.getText().toString());
int differanceOfMonthes = Calendar.getInstance().get(Calendar.MONTH) - Integer.parseInt(month.getText().toString());
int differanceOfDays = Calendar.getInstance().get(Calendar.DAY_OF_MONTH) - Integer.parseInt(day.getText().toString());
if (differanceOfDays < 0) {
differanceOfMonthes = differanceOfMonthes - 1;
differanceOfDays = 30 + differanceOfDays;
};
if (differanceOfMonthes < 0) {
differanceOfYears = differanceOfYears - 1;
differanceOfMonthes = 12 + differanceOfMonthes;
};
int numberOfDays = differanceOfDays + differanceOfMonthes * 30 + differanceOfYears * 365;
result.setText("you have lived for " + differanceOfYears + "" + "years, " + differanceOfMonthes + "" + "months and " + differanceOfDays + "" + "days ," + "totally" + numberOfDays + "" + "days");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
答案 0 :(得分:1)
如果您选中此System.out.println(Calendar.getInstance().get(Calendar.MONTH))
,即使当前月份为6月,它也会打印出5
。这可能是因为日历中的月份是索引5(从0开始)的月份
从文档中:https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#MONTH
public static final int MONTH
Field number for get and set indicating the month. This is a calendar-specific
value. The first month of the year in the Gregorian and Julian calendars is
JANUARY which is 0; the last depends on the number of months in a year.
只需将1加到您的differanceOfMonthes
。
酷程序顺便说一句!
答案 1 :(得分:-2)
尝试使用日期选择器以正确的格式从用户读取日期。在editText中,用户可以用不同的格式写日期。 geeksforgeeks的这篇文章可能会帮助您理解逻辑