«Int нельзя преобразовать в строку» при использовании метода - PullRequest
0 голосов
/ 10 октября 2018
import java.util.Scanner;
public class HWFive {

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 = 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);
    System.out.println("The sum of all digits is: " + str);
}    
}

В последней 4-й строке этого кода он продолжает говорить мне: «Int не может быть преобразован в строку», независимо от того, что я делаю, даже используя integer.parse, он продолжает давать мне эту ошибку ... это потому, чтоЯ вызываю метод наверху?

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Задача 1

str = numLowerCase(str);

У вас есть метод, возвращающий целочисленное значение, и вы пытаетесь установить строку в это целочисленное значение, что недопустимо в Java, хотяможет показаться простым преобразованием.

Возможные решения

  1. 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, который заставляет вас вводить число, а затем нажимает ввод.Scanner :: nextInt анализирует только целое число, которое вы ввели, и возвращает его, поэтому в буфере ввода все еще есть символ newLine.Когда вы вызываете сканер второй раз для scanner :: nextLine, он использует тот символ newLine, который уже находится в буфере, и не позволяет вам вводить новые входные данные.Чтобы это исправить, вам нужно добавить строку с scanner.next(); после вашего scanner.nextInt (), чтобы он позволял вам вводить второй вход и в основном отбрасывать символ newLine.

0 голосов
/ 10 октября 2018

Во-первых, если вы хотите прочитать ввод с консоли, вы можете использовать метод сканера 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);
}
0 голосов
/ 10 октября 2018

Возвращаемый тип метода numLowerCase () - int.Вы не можете присваивать значения типа int объекту типа String.(str) = numLowerCase(str) + "";

Нужно сделать свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...