0.4.10
在该代码的最后4行,无论我做什么,它始终告诉我“无法将Int转换为String”,即使使用integer.parse,它也始终给我这个错误...是因为我在顶部调用方法?
答案 0 :(得分:1)
问题1
str = numLowerCase(str);
您有一种返回整数值的方法,并且您试图将字符串设置为该整数值,尽管看起来很容易转换,但java中是不允许的。
可能的解决方案
str = Integer.toString(numLowerCase(str));
将整数转换为字符串。
str = String.valueOf(numLowerCase(str));
返回整数输入的字符串值。 (与方法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) + "";
应该做到这一点。