Получение ошибки компиляции «метод неприменим»

#java

#java

Вопрос:

Кто-нибудь может сказать, почему я получаю ошибку в строке 15 для count(s1) ? Ниже приведен мой код и точное сообщение, которое я получаю от eclipse:

Метод count (String, char) в типе LetterCount неприменим для аргументов (String)

 package count;

import java.util.Scanner;

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

        System.out.print("Enter a string: ");
        String s = input.nextLine();

        System.out.print("Enter a character: ");
        String s1 = input.next();

        System.out.println(s1   "appears"   count(s1)   "time(s).");

    }
    public static int count(String s, char s1) {
        int count = 0;
        for (int i = 0; i < s.length(); i  )
        {
            if (s.charAt(i) == s1)
            {
                count  ;
            }
        }
        return count;
    }
}
  

Комментарии:

1. Этот метод ожидает 2 аргумента, но вы передаете ему только 1. Что именно вы ожидали от этого?

2. сообщение об ошибке звучало так, как будто вы должны передать строку и символ для этой count функции, но вы передаете только s1 . правильно ли это?

3. мне также интересно, почему этот заголовок «возврат не работает» …?

4. Кроме того, поскольку на ваш вопрос ответили несколько человек, вы должны отметить тот, который был вам наиболее полезен.

Ответ №1:

Объявление вашего метода ожидает два параметра, вы передаете только один при его вызове.

Вероятно, вы также хотите передать переменную «s».

Комментарии:

1. Так будет ли это count (s, s1) в разделе system.out.print основного метода?

2. @user1019838 Исправлено (с оговоркой, что я не запускал код, чтобы проверить, действительно ли он выполняет то, что вы хотите, после правильного вызова 🙂

3. @user1019838 Не совсем; вы объявляете свой одиночный символ как строку, и ваш метод ожидает символ. Измените один из них.

Ответ №2:

Вы передали только один аргумент для подсчета (Sring s, char s1)

Легко допустить ошибку.

Ответ №3:

Измените это

 System.out.println(s1   "appears"   count(s1, someCharVariable)   "time(s).");
  

Для этого требуется 2 аргумента, а вы предоставляете только один.

Это единственная ошибка. Я скопировал ваш код и протестировал соответствующим образом.


Попробуйте это. вам нужно будет применить некоторое условие, чтобы гарантировать, что то, что вводится через оператор String s1 = input.next(); , является допустимым символом в Java.

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

    System.out.print("Enter a string: ");
    String s = input.nextLine();

    System.out.print("Enter a character: ");
    String s1 = input.next();

    System.out.println(s1   " appears "   count(s, s1.charAt(0))   " time(s).");
}

public static int count(String s, char s1) {
    int count = 0;
    for (int i = 0; i < s.length(); i  )
    {
        if (s.charAt(i) == s1)
        {
            count  ;
        }
    }
    return count;
}
  

Комментарии:

1. s1 предполагается, что это someCharVariable .

Ответ №4:

System.out.println(s1 "appears" count(s1) "time(s).");

должно быть:

System.out.println(s1 "appears" count(s,s1) "time(s).");

Комментарии:

1. да, s1 следует изменить на char .

2. Я пробовал это, но я все еще получаю ошибку: — Метод count (строка, символ) в типе LetterCount неприменим для аргументов (Строка, String) — Метод count (строка, символ) в типе LetterCount неприменим для аргументов (строка)