Java String / Char charAt () Сравнение
Я видел различные сравнения, которые можно сделать с помощью метода charAt() .
Однако я не могу понять некоторых из них.
Любая помощь была бы признательна.
5 ответов
Каждая буква и символ — это символ. Вы можете посмотреть на первый символ строки и проверить соответствие.
В этом случае вы получаете первый символ и смотрите, является ли это символом минус. Знак минус — (char) 45 см. Ниже
// Как сравниваются переменные типа char с оператором < ?
В Java все символы на самом деле являются 16-битными числами без знака. У каждого символа есть номер на основе юникода. например ‘9’ является символом (char) 57 Это сравнение верно для любого символа, меньшего, чем код для 9 , например пространство.
Первый символ вашей строки — ‘a’ , который равен (char) 97 , поэтому (char) 97 < (char) 57 ложно.
Он проверяет, существует ли этот символ в индексе 0, это сравнение.
Что касается if (c < ‘9’) , сравниваются значения ascii c и 9. Я не знаю, зачем вам проверять, меньше ли ascii-эквивалент c чем ascii-эквивалента ‘9’.
Если вы хотите получить значение ascii для любого символа, вы можете:
str.charAt(0) == ‘-‘; возвращает логическое значение, в данном случае false .
if (c < ‘9’) сравнивает значение ascii ‘3’ со значением ascii ‘9’ и снова возвращает логическое значение.
Этот оператор возвращает истину, если символ в точке 0 равен «-», и ложь в противном случае.
Это сравнивает значение ascii c со значением ascii ‘9’ в данном случае 99 и 57 соответственно.
Символы — это примитивный тип в Java, что означает, что это не сложный объект. Как следствие, каждый раз, когда вы сравниваете chars , вы напрямую сравниваете их значения.
Как сравнить char элементы массива между собой?
Как сравнить char элементы массива между собой? Нужно ли переводить их в String ?
Нет не нужно. char это примитивный тип (не путать с классом Character ) и для него определены все операции сравнения == , != , < , <= , > , >=
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java или задайте свой вопрос.
дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.7.41110
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как сравнить char в java
Уроки для начинающих  
12 апреля 2012  Автор статьи:  
Описание типа Char для работы с символами.
Для работы с символами в Java используется тип данных char. Объект этого типа является 16-битным символом Unicode. Его значение по умолчанию равно ‘\u0000’.
Присваивать значение переменной типа Char можно несколькими способами.
Пусть имеется переменная a1 типа char:
Операция
char a1 = ‘a’;
Запишет в переменную a1 символ a.
Также мы можем получить символ по его номеру в Unicode-таблице. Пусть имеется число int i содержащее номер символа в таблице.
Операция
сhar a2 = (char) i;
Запишет в переменную a2 символ находящийся в Unicode-таблице под номером i.
Также можно сравнивать переменные типа char. Пусть имеется переменная b1 типа Boolean и 2 объекта типа char – a1 и a2.
Операция
b1 = (a1
Запишет в переменную b1 значение true в случае если символ a1 встречается в Unicode-таблице раньше символа a2.
Как уже говорилось, char содержит лишь один символ, а вот о том как в java осуществляется работа со строками будет рассказано в следующем уроке.
Java / сравнение char-слова в массиве char
Как получить индекс одного слова (представленного в массиве символов), которое можно найти в абзаце (опять же представленном в массиве символов).
символ представляет слово
и вот этот абзац
Я хотел бы получить индекс первой буквы в данном случае 8-й. Я использовал бинарный поиск при сортировке слова перепутываются.
5 ответов
Я пытаюсь написать функцию, которая ищет элемент char * в массиве char* и запускает функцию проверки этого элемента, если элемент существует в массиве, то у меня будет found, если нет, то должен быть inserted и элемент добавлен в массив. Я написал этот код, но не знаю, как его попробовать.
Я создаю небольшую функцию, которая будет видеть, является ли char в массиве char пробелом. Если это так, то он удалит пробел. Пока что у меня есть: void clean(char* n, int size) > >; Тем не менее, я получаю сообщение об ошибке.
Немного неэффективно теоретически, но довольно практично и просто:
Если вы хотите понять, как это работает — проверьте метод static int indexOf(..) java.lang.String
Бинарный поиск не поможет вам в этом случае. Вы должны искать линейно. Самым простым решением было бы выполнить линейный поиск первого символа и, когда он будет найден, проверить, следует ли за ним оставшееся слово.
Более сложным решением было бы использовать алгоритм KMP .
Самый простой метод-просто попробовать все возможности, пройдя по каждой начальной точке и проверив, совпадают ли все символы. Судя по тому, что вы уже упомянули бинарный поиск, это, вероятно, достаточно просто, чтобы вы уже знали, хотя дайте мне знать, если это то, что вы ищете.
Вы можете преобразовать массивы символов в строки. Результат поиска в строке такой же, как если бы вы искали массивы.
Это может быть намного быстрее, чем наивный поиск O(n*m), потому что строковая функция indexOf оптимизирована.
Если вы хотите сделать это без создания временных строк, вы можете реализовать алгоритм поиска строк для массивов байтов. Вы можете, например, выбрать алгоритм Бойера-Мура , который имеет наихудший случай O(n).
Быстрый ответ, и я полагаю, что другие будут более сложными. Изначально я бы сделал что-то вроде этого (псевдокод лучше подходит для продумывания алгоритмов):
Правка: Чтобы сделать это более эффективным в случае, когда у вас будет несколько слов для поиска, вы можете создать двумерный массив со словами, отсортированными в соответствии с их первой буквой. С этого момента вы можете пройти через второй массив буква за буквой и проверить подмножество слов в соответствии с этой буквой.
Я пытаюсь найти строку в массиве char[] []. Я думаю, что проблема с моим кодом заключается в том, что когда charArray[k] оказывается совпадением, charArray[k+1] должен совпадать с puzzle[i][j+1] и продолжает совпадать для всего charArray.length. Но поскольку длина данного слова не предопределена.
Поле в java его тип-GUID. В db2 его тип-char для типа данных. Я не понимаю, почему (x’ 00345C9101600000018323B4F1311964BB’ < x ‘00345C9101600000018323B4F1311964BB01’) является ложным. разве это не сравнение шестнадцатеричных чисел? Спасибо за вашу помощь.
Похожие вопросы:
У меня есть массив unsigned char и массив только char . Я хочу сравнить их обоих, чтобы увидеть, одинаковы ли они. Иногда сравнение терпит неудачу, даже если биты одинаковы. Я знаю, что могу.
У меня есть перечисление, определенное таким образом: typedef enum : unsigned char Delimiter; Когда я сравниваю значение разделителя с байтом with.
У меня есть программа, которая ищет в массиве совпадение слов char *mywords []=
Я пытаюсь написать функцию, которая ищет элемент char * в массиве char* и запускает функцию проверки этого элемента, если элемент существует в массиве, то у меня будет found, если нет, то должен.
Я создаю небольшую функцию, которая будет видеть, является ли char в массиве char пробелом. Если это так, то он удалит пробел. Пока что у меня есть: void clean(char* n, int size)
Я пытаюсь найти строку в массиве char[] []. Я думаю, что проблема с моим кодом заключается в том, что когда charArray[k] оказывается совпадением, charArray[k+1] должен совпадать с puzzle[i][j+1] и.
Поле в java его тип-GUID. В db2 его тип-char для типа данных. Я не понимаю, почему (x’ 00345C9101600000018323B4F1311964BB’ < x ‘00345C9101600000018323B4F1311964BB01’) является ложным. разве это.
Извините, если терминология в названии неверна, но в основном я хочу сравнить массив char с массивом char*, содержащим строковые литералы. В основном у меня есть массив: char temp[6]; cin.get();.
У меня есть такая проблема, Исключение в потоке main java.lang.ArrayIndexOutOfBoundsException: 100 в Упражнении_12_2. main(Exercise_12_2.java:28) Когда я пытаюсь просто подсчитать вхождения букв в.
Мне было интересно, можно ли и как сравнить массив указателей char со строкой. Итак, скажем, у меня есть этот массив указателей char: char *input[20]; И каждый индекс ввода содержал строку.