【发布时间】:2021-12-29 21:47:16
【问题描述】:
我正在尝试制作一个程序,提示用户输入他们的生日年份(如 2001 年)。然后做一些数学上的事情(现在 - 用户写的年份(2021 - 2001))。但是,我收到此错误:
运算符“-”不能应用于字符串 int。
如何解决这个错误?
代码:
package com.myApp.User;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;
public class GetUserAge {
public String localtimeYear;
public int userBirthdayYear;
public static void main(String[] args) {
Scanner scannerObject = new Scanner(System.in);
GetUserAge getUserAgeObject = new GetUserAge();
LocalDateTime localDateObject = LocalDateTime.now();
DateTimeFormatter localDateObjectFormatted = DateTimeFormatter.ofPattern("yyyy");
getUserAgeObject.localtimeYear = localDateObject.format(localDateObjectFormatted);
// System.out.println(getUserAgeObject.localtimeYear); => 2021
getUserAgeObject.userBirthdayYear = scannerObject.nextInt();
System.out.println(calculateTrueBirthdayYear(getUserAgeObject.userBirthdayYear));
}
static int calculateTrueBirthdayYear(int userBirthdayYear) {
GetUserAge getUserAgeObject = new GetUserAge();
return (getUserAgeObject.localtimeYear - userBirthdayYear);
}
}
【问题讨论】:
-
请注意,仅使用年份会在生日前后给出错误的结果,具体取决于您的目标。
-
您可以在返回语句中使用
Integer.valueOf(getUserAgeObject.localTimeYear) - userBirthdayYear,因为您的 localTimeYear 是一个字符串,需要转换为整数才能对其进行数学运算
标签: java java.util.scanner java-time