Страница 1 из 1
Преобразовать и сравнить char
Добавлено: 16 ноя 2016, 07:57
Dr_Grizzly
Всем привет! Я тут начинающий программист на java, и зашел в тупик )) Вот такой код написал
Код: Выделить всё
public boolean checkInt(String stroka){
boolean fnd=false;
int leng = stroka.length();
if (leng>0) {
for (int i = 0; i < leng; i++) {
for (int k = 48; k<57; k++) {
if (stroka.charAt(1)==(char)k) {
fnd=true;
}else {
fnd=false;
}
}
}
}
System.out.println((char)57);
System.out.println(stroka.charAt(1));
return fnd;
}
Задача простая - найти в строке число, если нашли вернуть true. Решил что нужно перебрать каждый символ в строке и проверять его на значение от 0 до 9. Большой код писать не хочу, т.е можно было это if решить и проблем бы не было, но тут интересней решил подойти )) организовал вложенный цикл от 48 до 57 это код символов от 0 до 9, для проверки даже вывел их значение в конце метода, но чет if (stroka.charAt(1)==(char)k) никак не хочет сравнивать их... не пойму в чем загвоздка
Re: Преобразовать и сравнить char
Добавлено: 16 ноя 2016, 22:33
AiK
Character.toChars(57) пробовал?
Re: Преобразовать и сравнить char
Добавлено: 17 ноя 2016, 07:46
Dr_Grizzly
Если это пишу в строке if - if (stroka.charAt(1)==Character.toChars(57)) то получаю такое сообщение - Incompatible operand types char and char[]
Вроде бы один символ с массивом не хочет сравнивать ))
Re: Преобразовать и сравнить char
Добавлено: 17 ноя 2016, 09:16
AiK
Это фишка Java - если при сравнении типы не совпадают, то сравнить не судьба. У класса Character есть метод compare. А так же метод isDigit. Но это не спортивно.
у тебя, кстати в коде stroka.charAt(1) == - ты всегда с первым символом сравниваешь
Re: Преобразовать и сравнить char
Добавлено: 17 ноя 2016, 09:57
Dr_Grizzly
первый символ я сделал специально, запихнув в значение строки число, чтобы быть уверенным что она не пропускает это. Сработало!
Код: Выделить всё
public boolean checkInt(String stroka){
boolean fnd=false;
char ck='0';
int leng = stroka.length();
if (leng>0) {
for (int i = 0; i < leng; i++) {
for (int k = 48; k<57; k++) {
ck=(char)k;
if (Character.compare(stroka.charAt(i), ck)==0) {
fnd=true;
}
}
}
}
System.out.println((char)57);
System.out.println(stroka.charAt(1));
return fnd;
}
Re: Преобразовать и сравнить char
Добавлено: 27 сен 2017, 14:08
Андрей Белецкий
впервые вижу такой
Re: Преобразовать и сравнить char
Добавлено: 02 янв 2018, 01:31
SergeyKlimov
public class IntParsing {
public static void main(String[] args) {
System.out.println(checkInt("0tripg"));
}
public static boolean checkInt(String stroka) {
int leng = stroka.length();
if (leng > 0) {
for (int i = 0; i < leng; i++) {
if ((int) stroka.charAt(i) >= 48 &&
(int) stroka.charAt(i) <= 57) {
return true;
}
}
}
return false;
}
}
Re: Преобразовать и сравнить char
Добавлено: 02 янв 2018, 01:37
SergeyKlimov
Приводим к int и сравниваем.
Код: Выделить всё
public static boolean checkInt(String stroka) {
int leng = stroka.length();
if (leng > 0) {
for (int i = 0; i < leng; i++) {
if ((int) stroka.charAt(i) >= 48 &&
(int) stroka.charAt(i) <= 57) {
return true;
}
}
}
return false;
}
Re: Преобразовать и сравнить char
Добавлено: 15 апр 2018, 15:14
shdhdh
Попробуйте вместо if*(stroka.charAt(1)==(char)k)* написать if*(stroka.charAt(1).equals((char)k))*