Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 26.09.2017
Сообщений: 5

Не работает Switch

12.11.2018, 23:23. Показов 2526. Ответов 5

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, объясните что не так.
Нужно определить, является ли первая буква в слове гласной или согласной (русской или английской).
На 25-й строчке ошибка:
Кликните здесь для просмотра всего текста
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from char[] to char
Type mismatch: cannot convert from char[] to char
Type mismatch: cannot convert from char[] to char
Type mismatch: cannot convert from char[] to char
NotALetter cannot be resolved to a variable

at SwitchProblem.main(SwitchProblem.java:26 )


Собственно, код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.util.Scanner;
 
public class SwitchProblem {
    public static void main(String[] args) {
    //объявляем массивы с гласными и согласными
    char[] RuVowels = {'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я', 'А', 'Е', 'Ё', 'И', 'О', 'У', 'Ы', 'Э', 'Ю', 'Я'};
    char[] RuConsonants = {'б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Й', 'К', 'Л', 'М', 'Н', 'П', 'Р', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ь'};
    char[] EngVowels = {'a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y'};
    char[] EngConsonants = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z', 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z'};
        
    boolean isRuVowel = false;
    boolean isRuConsonant = false;
    boolean isEngVowel = false;
    boolean isEngConsonant = false;
    String Word;
    int n = 0;
    Scanner scan = new Scanner(System.in);
    
    //Находим первую букву в тексте
    System.out.println("Введите текст");
    Word = scan.next();
    char FirstLetter = Word.charAt(n);  
    
    switch (FirstLetter)    {
        case RuVowels:
            isRuVowel = true;
            System.out.println("Буква " + FirstLetter + " русская гласная");
            break;
        case EngVowels:
            isEngVowel = true;
            System.out.println("Буква " + FirstLetter + " английская гласная");
            break;
        case RuConsonants:
            isRuConsonant = true;
            System.out.println("Буква " + FirstLetter + " русская согласная");
            break;
        case EngConsonants:
            isEngConsonant = true;
            System.out.println("Буква " + FirstLetter + " английская согласная");
            break;
        default: FirstLetter = NotALetter;
            System.out.println("Символ " + FirstLetter + " не является буквой");
            }             
       
    //выводим на экран наименование буквы
        if(isRuVowel){
            System.out.println("Буква " + FirstLetter + " русская гласная");     }
        if(isRuConsonant){
            System.out.println("Буква " + FirstLetter + " русская согласная"); }        
        if(isEngVowel){
            System.out.println("Буква " + FirstLetter + " английская гласная");   }
        if(isEngConsonant){
            System.out.println("Буква " + FirstLetter + " английская согласная");   }        
        
    System.out.println("Word is " + Word);
    System.out.println("FirstLetter is " + FirstLetter);
    }
}
Догадываюсь, что неправильно задал case, но не уверен как правильно указать на массив.
Буду рад помощи в решении проблемы и дельным советам в целом по тому, как я накодил.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2018, 23:23
Ответы с готовыми решениями:

Не работает switch
Подскажите почему не заходит в оператор switch и не выводит сообщение?! Scanner scanner = new Scanner(System.in); ...

Как выявить все совпадения введенной буквы К с массивом [К.О.Ш.К.А.] или почему switch не работает
String letter; for (int q=0;q<x;q++ ) { System.out.println("Попытка №, введите букву"); ...

Не работает Switch
Ребята, прошу, помогите пожалуйста, не могу понять, где ошибка. Не выполняется второй кейс #include <stdio.h> #include...

5
 Аватар для NiceJacket
109 / 89 / 25
Регистрация: 02.06.2018
Сообщений: 259
12.11.2018, 23:31
Дело в том, что ты в switch используешь выражение типа char, а в case используешь массив.
В твоей реализации ты должен свою букву искать на предмет совпадения в каждом из массивов.
1
0 / 0 / 0
Регистрация: 26.09.2017
Сообщений: 5
13.11.2018, 10:40  [ТС]
Я пока не дошёл до объектов и классов и толком не знаю, как их использовать, но..
Как я понял, я должен перебирать по очереди все элементы массива(ов) и к каждому из них применять switch, так?
Или есть какой-то подходящий инструмент для этого?
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
13.11.2018, 11:21
держи, тут все так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Scanner;
 
public class Help {
    private static char [][] paterns = new char[4][];
 
    private static void fillPaterns(){
        paterns[0] = new char[]{'а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я', 'А', 'Е', 'Ё', 'И', 'О', 'У', 'Ы', 'Э', 'Ю', 'Я'};
        paterns[1] = new char[]{'б', 'в', 'г', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ь', 'Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Й', 'К', 'Л', 'М', 'Н', 'П', 'Р', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ь'};
        paterns[2] = new char[]{'a', 'e', 'i', 'o', 'u', 'y', 'A', 'E', 'I', 'O', 'U', 'Y'};
        paterns[3] = new char[]{'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z', 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z'};
    }
 
    private static int getNumAtributChar(char userChar) {
        int numStr = 0;
        for (char [] strArr : paterns) {
            for (char elem : strArr) {
                if (elem == userChar)
                    return numStr;
            }
            numStr++;
        }
        return -1;
    }
 
    public static void main(String[] args) {
        fillPaterns();
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите строку:");
        String userStr = scan.nextLine();
        int numArtib;
        for (char strChar : userStr.toCharArray()){
            numArtib = getNumAtributChar(strChar);
            switch (numArtib) {
                case 0 :
                    System.out.println(strChar + "  Русс. гл.");
                    break;
                case 1 :
                    System.out.println(strChar + "  Русс. согл.");
                    break;
                case 2 :
                    System.out.println(strChar + "  Англ. гл.");
                    break;
                case 3 :
                    System.out.println(strChar + "  Англ. соглю");
                    break;
                default:
                    System.out.println(strChar + "  Не буква, или не РусскоАнглиская!");
            }
        }
    }
}
результат работы:
Введите строку:
2qs ? ав
2 Не буква, или не РусскоАнглиская!
q Англ. соглю
s Англ. соглю
Не буква, или не РусскоАнглиская!
? Не буква, или не РусскоАнглиская!
Не буква, или не РусскоАнглиская!
а Русс. гл.
в Русс. согл.
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
13.11.2018, 13:20
Aviz__,

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    private static final Map<String, String> CHAR_GROUPS = Map.of(
            "English vowel", bothCase("aeiouy"),
            "English consonant", bothCase("bcdfghjklmnpqrstvwxz")
    );
 
    public static void main(String[] args) {
        final var s = "2qwerty ?";
        for (var ch : s.toCharArray()) {
            System.out.println(ch + " - " + getCharGroup(ch).orElse("Unknown"));
        }
    }
 
    private static Optional<String> getCharGroup(char ch) {
        return CHAR_GROUPS.entrySet().stream()
                .filter(e -> e.getValue().indexOf(ch) != -1)
                .findFirst()
                .map(Map.Entry::getKey);
    }
 
    private static String bothCase(String s) {
        return s.toLowerCase() + s.toUpperCase();
    }
2
0 / 0 / 0
Регистрация: 26.09.2017
Сообщений: 5
14.11.2018, 10:46  [ТС]
Aviz__, korvin_, спасибо!
Конечно, первоочередной целью было не поиск гласных/согласных, а попытка разобраться в коде. Поэтому теперь буду разбираться в том, что вы мне понаписали
Вариант от korvin_, вообще непонятный.. пока. Ну, я до этого ещё дойду)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2018, 10:46
Помогаю со студенческими работами здесь

Не работает Switch
//--------------------------------------------------------------------------- #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Не работает switch
У меня не работает switch $cat = $_GET; switch($cat) { case ($cat&gt;=15 AND $cat&lt;=30 OR $cat=1 ): $ret = 1; ...

Не работает switch =(
// 3 lab.cpp: определяет точку входа для консольного приложения. // #include &quot;karta.h&quot; #include &quot;stdafx.h&quot; #include...

Не работает switch
Пару дней изучаю C. Почему-то не работает оператор switch. Простенькая программка, которая по первой букве животного выводит его на экран....

Не работает switch
Делаю лабораторную по работе с файлами. В начале выбираешь пункт меню, после этого выполняется нужная функция. Проблема в том, что если я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru