Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用方法时“Int无法转换为字符串”_Java_String_Int - Fatal编程技术网

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

Java 使用方法时“Int无法转换为字符串”,java,string,int,Java,String,Int,在代码的最后4行,它一直告诉我,无论我做什么,Int都不能转换为String,即使使用integer.parse,它也一直给我这个错误。。。是因为我在调用顶部的方法吗?方法numLowerCase的返回类型是int。不能将int值分配给字符串类型的对象。 str=numlowercaster+ 应该能做到这一点。问题1 您有一个返回整数值的方法,并且您试图将字符串设置为该整数值,这在java中是不允许的,尽管这看起来很容易转换 可能的解决办法 str=Integer.tostringnumlow

在代码的最后4行,它一直告诉我,无论我做什么,Int都不能转换为String,即使使用integer.parse,它也一直给我这个错误。。。是因为我在调用顶部的方法吗?

方法numLowerCase的返回类型是int。不能将int值分配给字符串类型的对象。 str=numlowercaster+

应该能做到这一点。

问题1

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

可能的解决办法

str=Integer.tostringnumlowercaster; 将整数转换为字符串

str=String.valueOfnumLowerCasestr; 返回整数输入的字符串值。基本上与方法1相同

str=+numlowercaster; 允许将整数连接到字符串,因此只需将整数添加到空白字符串即可

问题2


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

首先,如果您想从控制台读取输入,可以使用scanner的nextLine方法,并且不应将nextLine与nextInt结合使用。正确答案是这样的

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);

等等-使用str=numlowercaster;,您想实现什么;?对潜在的亲密选民来说,这不是一个打字错误,除了使用奇怪的语法之外,还有另一个细微差别。我相信这是nextFoo扫描器问题的重复,但这个问题有点…不仅仅是这个问题。您正在尝试将num部分的numLowerCase强调的int解析为String str。或者将方法的结果解析为新的int变量,或者直接在print语句中调用它,不。这解决了症状,但也带来了两个新问题。@dave:当你准备好回答问题时,我们中的一些人仍然会在你身边。啊,是的,它修复了错误,但现在我不能使用扫描仪两次。一旦我在第一个扫描器中输入一个值。第二台扫描仪只是打印,不允许我输入值。请输入一个数字:67所有数字之和为:13请输入一个单词:所有数字之和为:0
str = numLowerCase(str);
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);
    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);
}