Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Java и switch

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Java и switch
Имя
Сообщение << Старые топики   Новые топики >>
Java и switch - 2007-11-23 13:01:59.626666   
matrix_real

Сообщений: 19
Оценки: 0
Присоединился: 2005-05-26 17:16:24
Ситуация такая: необходимо английские символы в строке заменять русскими, хотел реализовать это дело ч/з switch.

... switch (str2.substring(str2symnum, str2symnum + 1)) { case 'Y': str2.substring(str2symnum, str2symnum + 1) = 'У'; break; ...
но при компиляции стало ясно, что в качестве 'case' можно использовать только целые числа. каким способом можно это реализовать, не используя 'if'? заранее спасибо.
Post #: 1
RE: Java и switch - 2007-11-23 13:08:41.543333   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: matrix_real

Ситуация такая: необходимо английские символы в строке заменять русскими, хотел реализовать это дело ч/з switch.

... switch (str2.substring(str2symnum, str2symnum + 1)) { case 'Y': str2.substring(str2symnum, str2symnum + 1) = 'У'; break; ...
но при компиляции стало ясно, что в качестве 'case' можно использовать только целые числа. каким способом можно это реализовать, не используя 'if'? заранее спасибо.


Не знаю насчет чарактерных литералов в case (должно работать по уму, в С же работает), но str2.substring(str2symnum, str2symnum + 1) точно дает строчку длиной в 1 символ, а не чарактер. Должно быть что-то типа String.charAt(), не помню точно.
Post #: 2
RE: Java и switch - 2007-11-23 13:21:31.703333   
matrix_real

Сообщений: 19
Оценки: 0
Присоединился: 2005-05-26 17:16:24
В C можно использовать строчные символы, а в Java - нет (сижу читаю доки) :(
Post #: 3
RE: Java и switch - 2007-11-23 13:22:26.893333   
matrix_real

Сообщений: 19
Оценки: 0
Присоединился: 2005-05-26 17:16:24
str2.substring(str2symnum, str2symnum + 1) - данная конструкция возвращает подстроку длинной в 1 символ.
Post #: 4
RE: Java и switch - 2007-11-23 14:09:50.136666   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:

ORIGINAL: matrix_real

str2.substring(str2symnum, str2symnum + 1) - данная конструкция возвращает подстроку длинной в 1 символ.

подстрока - это тоже строка, то есть объект типа String. даже в if'ах ты не сможешь их толком сравнить через "=", потому что будут сравниваться адреса, а не значения строк. для сравнения используй метод equals(), это если решишь через if'ы делать.
а лучше всё таки используй метод charAt() и сравнивай символы, должно работать.

к слову, в Си тип char вообще числовой, его можно не только сравнивать, но и складывать, и умножать. отличие, например, от int'a только в том, что int нельзя инициализировать символьной константой.
Post #: 5
RE: Java и switch - 2007-11-23 14:49:49.650000   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: matrix_real

str2.substring(str2symnum, str2symnum + 1) - данная конструкция возвращает подстроку длинной в 1 символ.


Даже в С литералы "A" и 'A' имеют совершенно разный тип. Перый - строчный литерал, второй - символьный.
Post #: 6
RE: Java и switch - 2007-11-23 14:54:19.016666   
Absurd

Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
quote:

ORIGINAL: Absurd

quote:

ORIGINAL: matrix_real

str2.substring(str2symnum, str2symnum + 1) - данная конструкция возвращает подстроку длинной в 1 символ.


Даже в С литералы "A" и 'A' имеют совершенно разный тип. Перый - строчный литерал, второй - символьный.


PS:

public class Main {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public static void main(String[] args) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String a = "BoZo"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (a.charAt(0)) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case 'B': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("It's ok"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Fail");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; }
Output:  It's ok
Post #: 7
RE: Java и switch - 2007-11-24 09:13:50   
matrix_real

Сообщений: 19
Оценки: 0
Присоединился: 2005-05-26 17:16:24
Absurd:
quote:

public class Main {
public static void main(String[] args) {
String a = "BoZo";
switch (a.charAt(0)) {
case 'B':
System.out.println("It's ok");
break;
default:
System.out.println("Fail");
}
}
}


Помогло. Большое спасибо. :) Тема закрыта
Post #: 8
RE: Java и switch - 2007-11-24 09:15:38.533333   
matrix_real

Сообщений: 19
Оценки: 0
Присоединился: 2005-05-26 17:16:24
kreol, тоже спасибо :)
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Java и switch







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.