#java #arrays
#ява #массивы #java
Вопрос:
Я пытаюсь понять, как мы можем использовать элемент string внутри массива целых чисел. Я решаю один из вопросов, связанных с массивом, где я пытаюсь сохранить частоту символов в строке.
int[] letters = new int[128];
for(int i = 0; i < s.length(); i ){
System.out.println(s.charAt(i));
letters[s.charAt(i)] = letters[s.charAt(i)] 1;
}
Мой вопрос в том, что, поскольку letters — это целочисленный массив, s.charAt(i) вернет строковый символ.
Я распечатываю букву [s.charAt (i)], которая, скажем, является буквой [‘a’], которая выводит число. Но при использовании charAt это не так. Как мы можем получить доступ к символу в качестве индекса?
Комментарии:
1. Вы ошибаетесь,
letters['a']
ошибка не будет выдана.letters[a]
would (неизвестный символa
), иletters["a"]
would, ноcharAt()
возвращает achar
, а не переменную и не aString
.2. @Andreas Итак, как символ может быть индексом или массивом? Допустим, буквы [‘a’]
3.
String
не может быть индексом, но код не пытается использовать aString
в качестве индекса, он использует achar
в качестве индекса.4. Это так, потому что
char
это числовое значение (0-65535) с кодовой точкой Unicode. На самом деле, это значение UTF-16, но пока игнорируйте это. Смотрите: Учебные пособия по Java ™ — Примитивные типы данных5. Попробуйте
System.out.println((int) 'a');
и посмотрите, что получится. Подсказка: он напечатает значение ASCII / Unicode символа Юникода «ЛАТИНСКАЯ МАЛЕНЬКАЯ БУКВА A» (U 0061) .
Ответ №1:
Я пытаюсь понять, как мы можем использовать элемент string внутри массива целых чисел.
Это зависит от того, что вы подразумеваете под использованием. Если вы хотите сохранить строковое значение в целочисленный массив — вы не можете. Ни int[]
ни Ingeter[]
не позволят вам хранить в них какой-либо строковый элемент. Вы получите ошибку времени компиляции, что-то вроде:
java: incompatible types: java.lang.String cannot be converted to int
Я распечатываю букву [s.charAt (i)], которая, допустим, является буквой [‘a’]
Строка#charAt(int) возвращает один символ, и то, что вы пытаетесь сделать, это получить доступ к слоту вашего letters
массива с символьным индексом, который, в свою очередь, также остановит ваш процесс компиляции с сообщением:
java: cannot find symbol
symbol: variable yourCharacter
Как мы можем получить доступ к символу в качестве индекса?
Вы не можете. Индекс любого массива всегда является положительным целым числом.
Ответ №2:
Допустим, ваша строка равна
String str = "stack"
for(int i=0; i<str.length(); i ) {
System.out.println(str.charAt(i))
}
// Сигнатурой метода charAt является charAt (индекс int). Здесь он принимает индекс строки, на который ссылается i, и печатает символ. Ваше предположение немного неверно. Вы можете обратиться к классу String официальной документации Java, чтобы лучше понять аргументы методов, что он делает и что возвращает.
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html