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

Модератор: Absurd

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

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

Сообщение Dr_Grizzly » 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
Откуда: СПб
Контактная информация:

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

Сообщение AiK » 16 ноя 2016, 22:33

Character.toChars(57) пробовал?
Даже самый дурацкий замысел можно воплотить мастерски

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

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

Сообщение Dr_Grizzly » 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
Откуда: СПб
Контактная информация:

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

Сообщение AiK » 17 ноя 2016, 09:16

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

у тебя, кстати в коде stroka.charAt(1) == - ты всегда с первым символом сравниваешь
Даже самый дурацкий замысел можно воплотить мастерски

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

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

Сообщение Dr_Grizzly » 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

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

Сообщение Андрей Белецкий » 27 сен 2017, 14:08

впервые вижу такой

SergeyKlimov
Сообщения: 3
Зарегистрирован: 01 янв 2018, 23:57

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

Сообщение SergeyKlimov » 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

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

Сообщение SergeyKlimov » 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

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

Сообщение shdhdh » 15 апр 2018, 15:14

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

Ответить