В чем причина ошибки "cannot find symbol" [закрыт]

218
01 декабря 2021, 12:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Пытаюсь решить задачу, но ничего не получается. Я искал информацию об ошибке, но не нашел ответа. Прошу помочь.

Текст задачи, если интересно:

Дана непустая строка и целое число n. Вернуть новую строку, в которой символ на n'ой позиции будет удалён. Значение n - валидная позиция символа в оригинальной строке (n находится в промежутке [0;str.length - 1].

public class Five{
    public static void main(String[] args) {
        missingChar mschar = new missingChar("abcdefghigklmnopqrstuwxyz", 5);
        System.out.println(mschar);
    }

    public String missingChar(String word, int n){
        for(int i = 0; i < word.length(); i++){
            if(word[i] == n){
                for(int j = i; j < word.length - 1; j++){
                    word[j] = word[j+1];
                }
                break;
            }
        }
    }
}

Вот, кстати, сам текст ошибки:

Five.java:13: error: cannot find symbol
            missingChar mschar = new missingChar("abcdefghigklmnopqrstuwxyz", 5);
            ^
Answer 1

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

С помощью обычного цикла задача решается так:

public static String missingChar1(String word, int n){
    String res = "";
    for(int i = 0; i < word.length() - 1; i++){
        if (i < n) {
            res += word.charAt(i);
        } else {
            res += word.charAt(i + 1);
        }
    }
    return res;
}

Но в Java есть встроенный класс StringBuilder, который, помимо прочих удобных методов, позволяет удалять символы из строки непосредственно. Метод delete(a, b) удаляет из строки все символы с индексами от a до b, включая a, но не включая b. Зная это, можно упростить решение до вот такого вида:

public static String missingChar2(String word, int n){
    StringBuilder res = new StringBuilder(word);
    res.delete(n, n + 1);
    return res.toString();
}

Однако, можно привести еще более короткое решение, воспользовавшись стандартным методом substring() класса String. Просто взять кусок строки до заданного символа и "склеить" (конкантенировать) его с куском строки после этого символа.

public static String missingChar3(String word, int n){
    return word.substring(0, n) + word.substring(n + 1);
}

Желаю вам успехов в изучении красивого и элегантного языка Java!

Answer 2

Ты написал метод, а не класс. Метод - это тоже самое, что и функция. Он выполняет какое-либо действие, и в зависимости от типа метода, может либо вернуть значение, либо нет. Так же ты создал по видимому экземпляр метода(такого не бывает!). Экземпляры бывают только класса!

Нет ничего страшного, как только пройдешь раздел классы, можешь смело реализовывать!

READ ALSO
Почему родительский блок меняет свой размер с :hover?

Почему родительский блок меняет свой размер с :hover?

у меня присутствует ховер, который добавляет линию подчеркивания под объектом]2

149
Как сделать отображение шрифта иконок кросс-браузерно?

Как сделать отображение шрифта иконок кросс-браузерно?

Как сделать отображение шрифта иконок кросс-браузерно?

80
Предикат для сравнения массива char

Предикат для сравнения массива char

Хочу отсортировать массив из массивов char (char[32])Хочу использовать метод sort из stl

137
Реверсия массива

Реверсия массива

такой вопрос:

97