使用方法时“无法将Int转换为字符串”

时间:2018-10-10 01:13:19

标签: java string int

0.4.10

在该代码的最后4行,无论我做什么,它始终告诉我“无法将Int转换为String”,即使使用integer.parse,它也始终给我这个错误...是因为我在顶部调用方法?

3 个答案:

答案 0 :(得分:1)

问题1

str = numLowerCase(str);

您有一种返回整数值的方法,并且您试图将字符串设置为该整数值,尽管看起来很容易转换,但java中是不允许的。

可能的解决方案

  1. str = Integer.toString(numLowerCase(str));

将整数转换为字符串。

  1. str = String.valueOf(numLowerCase(str));

返回整数输入的字符串值。 (与方法1基本相同)

  1. str = "" + numLowerCase(str);

允许将整数连接到字符串,因此您只需将整数添加到空白字符串即可。

问题2

System.out.print("Please enter a number:");
int number = s.nextInt();
number = sumDigits(number);
System.out.println("The sum of all digits is: " + number);

System.out.print("Please enter a Word: ");
String str = s.nextLine(); 
(str) = numLowerCase(str);

在此代码块中,您使用scanner :: nextInt,这使您可以输入数字,然后按Enter。 Scanner :: nextInt只解析输入的整数并返回该整数,因此输入缓冲区中仍然存在newLine char。当您第二次为扫描仪:: nextLine调用扫描仪时,它将使用缓冲区中已经存在的newLine字符,并且不允许您输入新的输入。要解决此问题,您需要在scanner.nextInt()之后添加一个scanner.next();行,以便您可以输入第二个输入并基本丢弃newLine字符。

答案 1 :(得分:0)

首先,如果要从控制台读取输入,则可以使用Scanner的nextLine方法,并且不应将nextLine与nextInt结合使用。正确的是这个

    public static int sumDigits(int number)
{
    int sum = 0;
    while(number > 0)
    {
        sum = sum + number % 10;
        number = number / 10;
    }
    return sum;

}
public static int numLowerCase(String str)
{
    int numLower = 0;
    int index = 0;
    char ch;
    while (index < str.length()){
        ch = str.charAt(index);
        if('a' <= ch && ch <= 'z'){
            numLower++; }
        index++;
    }
    return numLower;
}


public static void main(String[] args){
    Scanner s = new Scanner(System.in);

    System.out.print("Please enter a number:");
    int number = Integer.valueOf( s.nextLine());
    number = sumDigits(number);
    System.out.println("The sum of all digits is: " + number);

    System.out.print("Please enter a Word: ");
    String str = s.nextLine();
    (str) = String.valueOf(numLowerCase(str));
    System.out.println("The sum of all digits is: " + str);
}

答案 2 :(得分:-2)

numLowerCase()方法的返回类型为int。您不能将int值分配给String类型的对象。 (str) = numLowerCase(str) + "";

应该做到这一点。