1

我在尝试使用时遇到错误Integer.parseInt()。它们是,没有找到适合 parseInt(int) 的方法,而 Integer.pasreInt(String) 方法不适用。

import java.io.InputStream; 
import java.util.Scanner; 
import java.util.regex.Pattern; 

class bday1
{ 
public static void main(String[] args) 
{ 
    Scanner sc = new Scanner(System.in);
    int day;
    int month=0;
    int year;
    int whatDay;
    int howManyDays=0;
    int leapYear;
    final int JANYEAR = 1901;
    int[] dayMonth = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    boolean numberEntered=true;
    String strMonth;
    String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

    System.out.print("What is your birthdate? "); 
    sc.useDelimiter(Pattern.compile("[-/.\\s]")); 
    day = sc.nextInt();
    strMonth = sc.next();
    year = sc.nextInt();

    if((strMonth.charAt(0) >='0') && (strMonth.charAt(0) <='9'))
    {
        numberEntered=true;
        System.out.println ("number entered");
    }

    if(numberEntered)
    {
        strMonth=Integer.parseInt(month);
    }

    else
    {
        System.out.println ("string entered");
    }

那是我的代码片段,我相信我遇到了麻烦。任何帮助都会很棒。

4

3 回答 3

1

由于 month 初始化为零并且之后不会更改,因此设置strMonthtomonth只会成功将其设置为 0。从您的代码的外观来看,您似乎正在尝试将值设置为monthto strMonth。为此,请替换:

strMonth = Integer.parseInt(month);

具有以下内容:

month = Integer.parseInt(strMonth);
于 2013-08-28T01:58:28.860 回答
0

您正在尝试将字符串值分配给 int 数据类型。所以只有它不会允许你。

strMonth= Integer.parseInt(month); // variable month and strMonth is int dataType

然后Integer.parseInt()将返回字符串值。将类型更改为 String 或将 String 转换为 int

尝试

strMonth = String.valueOf(month);
于 2013-08-28T01:52:57.700 回答
0

在您的代码中,您使用的是 parseInt ,它需要一个字符串。您正在使用的月份已经是一个 int。

您要做的是将 int 转换为 String。正常的方式是Integer.toString(i)or String.valueOf(i)

于 2013-08-28T01:55:34.530 回答