Преобразовать и сравнить char

Модератор:Absurd

Ответить
Dr_Grizzly
Сообщения:406
Зарегистрирован:13 сен 2004, 12:05
Откуда:Курган
Контактная информация:

16 ноя 2016, 07:57

Всем привет! Я тут начинающий программист на 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) никак не хочет сравнивать их... не пойму в чем загвоздка
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
AiK
Сообщения:2271
Зарегистрирован:13 фев 2004, 18:14
Откуда:СПб
Контактная информация:

16 ноя 2016, 22:33

Character.toChars(57) пробовал?
Даже самый дурацкий замысел можно воплотить мастерски
Dr_Grizzly
Сообщения:406
Зарегистрирован:13 сен 2004, 12:05
Откуда:Курган
Контактная информация:

17 ноя 2016, 07:46

Если это пишу в строке if - if (stroka.charAt(1)==Character.toChars(57)) то получаю такое сообщение - Incompatible operand types char and char[]
Вроде бы один символ с массивом не хочет сравнивать ))
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
AiK
Сообщения:2271
Зарегистрирован:13 фев 2004, 18:14
Откуда:СПб
Контактная информация:

17 ноя 2016, 09:16

Это фишка Java - если при сравнении типы не совпадают, то сравнить не судьба. У класса Character есть метод compare. А так же метод isDigit. Но это не спортивно.

у тебя, кстати в коде stroka.charAt(1) == - ты всегда с первым символом сравниваешь
Даже самый дурацкий замысел можно воплотить мастерски
Dr_Grizzly
Сообщения:406
Зарегистрирован:13 сен 2004, 12:05
Откуда:Курган
Контактная информация:

17 ноя 2016, 09:57

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

Код: Выделить всё

 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;
  }
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Андрей Белецкий
Сообщения:10
Зарегистрирован:27 сен 2017, 13:28

27 сен 2017, 14:08

впервые вижу такой
SergeyKlimov
Сообщения:3
Зарегистрирован:01 янв 2018, 23:57

02 янв 2018, 01:31

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;
}

}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
SergeyKlimov
Сообщения:3
Зарегистрирован:01 янв 2018, 23:57

02 янв 2018, 01:37

Приводим к 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;
	}
shdhdh
Сообщения:2
Зарегистрирован:15 апр 2018, 14:34

15 апр 2018, 15:14

Попробуйте вместо if*(stroka.charAt(1)==(char)k)* написать if*(stroka.charAt(1).equals((char)k))*
Ответить