我的任务是编写并运行一个执行以下操作的程序:
我的问题是,如何输入用户的月,日和年以及当前日期,月份和年份,然后计算用户年龄?我们的老师允许使用子串,但我不确定如何开始?有什么提示吗?
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();
}
}
答案 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。