#java #uppercase #lowercase #charat
#java #верхний регистр #нижний регистр #charat
Вопрос:
Я выполнял упражнение. Напишите Java-программу, которая требует от пользователя ввода одного символа из алфавита. Выведите гласную или согласную, в зависимости от пользовательского ввода. Если пользовательский ввод не является буквой (между a и z или A и Z), или строка длиной > 1, выведите сообщение об ошибке. И это ответ:
import java.util.Scanner;
public class Exercise8 {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Input a alphabet: ");
String input = in.next().toLowerCase();
boolean uppercase = input.charAt(0) >= 65 amp;amp; input.charAt(0) <= 90;
boolean lowercase = input.charAt(0) >= 97 amp;amp; input.charAt(0) <= 122;
boolean vowels = input.equals("a") || input.equals("e") || input.equals("i")
|| input.equals("o") || input.equals("u");
if (input.length() > 1)
{
System.out.println("Error. Not a single character.");
}
else if (!(uppercase || lowercase))
{
System.out.println("Error. Not a letter. Enter uppercase or lowercase letter.");
}
else if (vowels)
{
System.out.println("Input letter is Vowel");
}
else
{`enter code here`
System.out.println("Input letter is Consonant");
}
}
}
Как это происходит,
boolean uppercase = input.charAt(0) >= 65 amp;amp; input.charAt(0) <= 90;
работает? Не должен input.charAt()
возвращать строку?
Кроме того, почему существует различие для верхнего и нижнего регистра во второй половине кода, если кто-то использовал
toLowerCase();
уже?
Комментарии:
1.Почему должен
charAt
возвращать строку?2. прочитайте об acsii и char
3.
charAt()
возвращаетchar
, что, на мой взгляд, имеет смысл.4. Почему бы вам не проконсультироваться с javadoc? docs.oracle.com/javase/8/docs/api/java/lang /…
5. да, проверка верхнего регистра не имеет смысла, поскольку он уже преобразован в нижний регистр раньше
Ответ №1:
Похоже, у вас есть и вопрос, и ответ. И вам нужно знать, как работает charAt (0), во-первых, во-вторых, вы хотите знать, как на самом деле работает код.. Если вам интересно, почему ваш вопрос отклоняется, то это ответ.
SE не является сайтом для проверки кода. Если у вас есть какие-либо конкретные сомнения в отношении рабочего процесса кода, то, безусловно, это ваше место. Даже я столкнулся с подобной ситуацией, когда впервые начал использовать SE. Не беспокойтесь о недостатках, вы станете профессионалом в задавании вопросов с опытом.
Теперь отвечаю на ваш вопрос:
Метод java string charAt() возвращает значение char с заданным номером индекса. Номер индекса начинается с 0.
Пример:
public class Solution{
public static void main(String args[]){
String name="StackExchange";
char ch=name.charAt(4);//returns the char value at the 4th index
System.out.println(ch);
}}
Результат равен k ..
Кроме того, почему существует различие для верхнего и нижнего регистра во второй половине кода, если кто-то использовал
toLowerCase();
Это именно тот способ, от использования которого вам следует воздержаться в SE..
Это явно говорит нам, что это не ваш код, и вы хотите, чтобы люди здесь научили вас логике кода.
В любом случае ответ на этот ваш вопрос таков,
Да, совершенно необязательно использовать верхний регистр, поскольку вы преобразовали каждую букву в нижний регистр на самом этапе ввода
Несколько идей:
Теперь, когда вы поняли логику этого кода, попробуйте реализовать то же самое с регулярными выражениями.
Всего наилучшего.
Ответ №2:
Не должен ли input.charAt (0) возвращать строку?
Нет.
Он возвращает char
. Проверьте javadoc.
Почему input.charAt(0) >= int работает?
Потому что charAt(0)
возвращает a char
, и a char
можно сравнить (безопасно!) с int
.
Сказав это, ваш код работает должным образом, только если входной символ состоит из символов в (7-битном) ASCII. Это не будет работать для латинских символов с ударением, для греческого, кириллического, арабского или …. практически для всего остального. (Хорошо, вы, вероятно, столкнулись только с проблемой работы с текстом ASCII. Но имейте это в виду в будущих задачах программирования, которые вы выполняете.)
И в вашем коде есть другие ошибки, как указано в комментариях.