我正在尝试将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
答案 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
。