Java

Не могу разобраться с ASCII.

Добрый день. Я нубчик, который решил выучить Java, других языков не знаю, посему вопрос тупой.
Суть проблемы - Код ASCII символов нижнего регистра отличается от кода соответствующих символов верхнего регистра на величину 32. Следовательно, для преобразования строчной буквы в прописную нужно уменьшить ее код на 32. Используйте это обстоятельство для написания программы, осуществляющей ввод символов с клавиатуры. При выводе результатов данная программа должна преобразовывать строчные буквы в прописные, а прописные — в строчные. Остальные символы не должны изменяться.

Ниже моё решение, которое не работает. %( Как решить проблему с работой АСКИ... Объясните что ли где я косячу...

public class MyFirstClass{
public static void main(String args[])
throws java.io.IOException {

char ch;
System.out.print("Press a key followed by ENTER: ");

ch = (char) System.in.read();

if (ch >= 41){
ch = (char) (ch + 32);}

if (ch >= B5){
break;}

if (ch >= 61){
ch = (char) (ch - 32);}

if (ch >= B7){
break;}

System.out.print("key: "+ch);
}}
Muratbek Ergeshov
Muratbek Ergeshov
120
мне так кажется, что В5 и В7 - это hex
Сергей Полесский
Сергей Полесский
38 457
Лучший ответ
Muratbek Ergeshov А можно как то подробнее? Я не понял ответа.
Намудрили вы что-то с if-ами. Во-первых почему везде стоит >=. Под условие >= 41. Подпадает также и >= 61. Нужно как-бы делать ограничение с обоих сторон, если надо так. Во-вторых break вообще зачем надо. Сделайте нормальную структуру:
if ()
else if ()
else
Muratbek Ergeshov Спасибо, я понял свою ошибку. И спасибо за подсказку "Как сделать правильно".
Ты уверен чо это все компилируется вообще; Ладно B5 и B7 это какие то внешние константы, но вот что такое break вне свитча или цикла? Вообще самый верный и простой способ : String.toLowerCase();
Алекс. В.
Алекс. В.
6 169
Идеально работает
 class Main { 
public static void main(String[] args) throws java.io.IOException {

long i = 0;
while (true) {
char check = (char) System.in.read();

if (check = 65) {
check += 32;
++i;
System.out.print(check);
}
else if (check = 97) {
check -= 32;
++i;
System.out.print(check);
}
else if (check == 46) {
break;
}
else {
System.out.print(check);
}

}
System.out.println("\nПрограмма поменяла регистр " + i + " раз");

}
}
Хотя да, я затупил, вот через do while будет мб логичнее
 class Main { 
public static void main(String[] args) throws java.io.IOException {

char check;
long i = 0;
do {
check = (char) System.in.read();

if (check = 65) {
check += 32;
++i;
System.out.print(check);
}
else if (check = 97) {
check -= 32;
++i;
System.out.print(check);
}
else {
System.out.print(check);
}

} while (check != 46);
System.out.println("\nПрограмма поменяла регистр " + i + " раз");

}
}
Вот, тоже дошел до этой задачи. Все работает

public class sriiing {
public static void main(String[] args)
throws java.io.IOException {
char ch;
int i;
i=0;
do {ch=(char)System.in.read();

if (ch>=65&ch<=90){
ch=(char)(ch+32);
System.out.println(ch);
i=i+1;
}
else {if(ch>=97&ch<=122){
ch=(char)(ch-32);
System.out.println(ch);
i=i+1;}

}
}while(ch!='.');
System.out.println(i);
}
}
Bekzodbek Matyoqubov
Bekzodbek Matyoqubov
217