Java中从char到int的数据类型转换错误

时间:2018-08-13 15:07:20

标签: java

我正在尝试将char数组转换为int类型,但无法将String转换为int。

import java.util.Scanner;

      public class NumberOfDays

 {

    public static void main (String args[]) 

{

    Scanner in = new Scanner(System.in);
    String date = "19/04/2018";
    //System.out.print(date);
    char charArray[] = new char[10];
    int dateInt[] = new int[6];

    for (int i = 0; i < 10; i++) {
        charArray[i] = date.charAt(i);
        if (charArray[i] == '/')
            continue;
        dateInt[i] = Integer.parseInt(charArray[i]); //error is here
    }

    for (int j = 0; j < dateInt.length; j++)
        System.out.print(dateInt[j]);
}
}

该字符串被划分为char,然后我尝试将每个索引(它是整数值)转换为int,它显示错误。
错误消息:

NumberOfDays.java:14: error: incompatible types: char cannot be converted to String

dateInt[i] = Integer.parseInt(charArray[i]);
                                                           ^

Note: Some messages have been simplified; recompile with -Xdiags:verbose to 
get full output

1 error

5 个答案:

答案 0 :(得分:0)

请注意,如果数组大小不同,则将出现“ IndexOutOfBound”异常。接下来,使用Integer.Parse,它需要String作为参数。相反,您可以使用Character.getNumericValue来转换字符。

这是您可行的示例:

public class NumberOfDays
 {
    public static void main (String args[]) 
   {
    String date = "19/04/2018";
    //System.out.print(date);
    int dateInt[] = new int[10];

    for (int i = 0; i < 10; i++) {
        if (date.charAt(i) == '/')
            continue;
        dateInt[i] = Character.getNumericValue(date.charAt(i));
    }
    for (int j = 0; j < dateInt.length; j++)
        System.out.print(dateInt[j]);
}
}

答案 1 :(得分:0)

如果要将char转换为int。这样做:

dateInt[i] = charArray[i] - '0';

顺便说一句,您可以使用正则表达式优雅地解决问题,如下所示:

Scanner in = new Scanner(System.in);
String date = "19/04/2018";
int dateInt = Integer.parseInt(date.replaceAll("\\/", ""));
System.out.println(dateInt);

输出

19042018

答案 2 :(得分:0)

您会收到错误消息,因为Integer.parseInt(String s)方法仅将String作为参数,而您在此处传递字符作为参数。

  

dateInt [i] = Character.getNumericValue(date.charAt(i))

这应该有效。

答案 3 :(得分:0)

parseInt仅接受字符串参数,而不接受字符。这就是为什么您会收到此错误。您可以通过new String()将字符转换为strign,但这并不是该代码中的唯一错误。

安装IDE,它将帮助您解决一些小错误。

答案 4 :(得分:0)

此行

dateInt[i] = Integer.parseInt(charArray[i]);

试图通过传递一个char值来调用Integer.parseInt。 char是原始类型,不能隐式转换为String。如果您假定字符是数字的(显然是这样),则可以将其转换为String,如下所示:

dateInt[i] = Integer.parseInt(charArray[i] + "");

您也可以改用Character.getNumericValue,这样可以使代码更简洁。

另一方面,如果要获取字符代码,则只需将char值分配给int