使用子字符串计算出生日期

时间:2017-03-15 13:42:10

标签: java

我的任务是编写并运行一个执行以下操作的程序:

  • 打印一条消息,邀请用户输入他的姓名和生日(dd / mm / yyyy)。
  • 提示用户输入今天的日期
  • 计算用户的年龄(总是假设为30天)
  • 显示一条消息,通知用户他的年龄,例如“亲爱的迈克尔,你已经12岁零4个月大了”。

我的问题是,如何输入用户的月,日和年以及当前日期,月份和年份,然后计算用户年龄?我们的老师允许使用子串,但我不确定如何开始?有什么提示吗?

import java.util.Scanner;
public class Assignment3 {
    static Scanner scan = new
    Scanner(System.in);
    public static void main (String [] args) {
        System.out.println("Please enter your name");
        String name=scan.next();

        System.out.println("Please enter your date of birth");

        int dateofbirth=scan.nextInt();

        System.out.println("Please enter today's date");

        int currentdate=scan.nextInt();
    }
}

4 个答案:

答案 0 :(得分:0)

您可以使用包含3个整数的Date年月和日(有关详细信息,请参阅链接)

你有功能.getDay .getMonth和.getYear,你可以用它来比较和计算你当前的年龄;)

答案 1 :(得分:0)

substring(int beginIndex)方法" cut"给定索引处的字符串,并返回字符串的剩余部分。

substring(int beginIndex, int endIndex)方法也会在给定索引处剪切String,但在这两个索引之间返回String。

以下是一个例子:

public static void main(String[] args) {
    String str = "abcdefg";

    System.out.println(str.substring(2));
    // print : "cdefg"
    System.out.println(str.substring(2,4));
    // print : "cde"
}

现在,在您的情况下,用户将以这种格式输入其生日:dd/mm/yyyy,因此您知道在何处解析输入的字符串以获取不同变量的日期,月份和出生年份用户。

祝你好运!

有关String类及其方法的更多信息,请参阅:official documentation

答案 2 :(得分:0)

首先,您应该通过String将日期设为scanner.next()。如果输入为e,则nextInt会导致异常。 G。 "15/03/2017"。 一种可能性是使用java.util.Calendar

public static void main(String... args) throws Exception {
    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter your name");
    String name = scan.next();

    System.out.println("Please enter your date of birth");
    String dateofbirth = scan.next();

    System.out.println("Please enter today's date");
    String currentdate = scan.next();

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    Calendar birthdayCal = Calendar.getInstance();
    birthdayCal.setTime(dateFormat.parse(dateofbirth));
    Calendar todayCal = Calendar.getInstance();
    todayCal.setTime(dateFormat.parse(currentdate));
    long years = todayCal.get(Calendar.YEAR) - birthdayCal.get(Calendar.YEAR);
    long months = todayCal.get(Calendar.MONTH) - birthdayCal.get(Calendar.MONTH);
    long days = todayCal.get(Calendar.DAY_OF_MONTH) - birthdayCal.get(Calendar.DAY_OF_MONTH);
    System.out.println(MessageFormat.format("Dear {0}, you are {1} years, {2} months and {3} days old", name, years, months, days));
}

使用Java 8,您可以使用java.time.*中的API。请注意,SimpleDateFormat#parse可能会抛出ParseException

答案 3 :(得分:0)

你可以使用这个方法:String [] split(String regex); 它通过正则表达式拆分字符串。

例如,"dd/mm/yyyy".split("/");它将返回{"dd","mm","yyyy"}。 你可以通过这个来生育和约会:

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    String[] str = new String[3];
    String s = scan.next();
    str = s.split("/");
}

但是当你想要计算它们时你应该把字符串改成int。