2016-09-14 2 views
-2

У меня есть массив, как:Кастинг конкретный элемент массива - Java

String letters [] = {a, b, c, d, e};

Могу ли я бросить конкретный элемент, скажем, «а»? Я хочу, чтобы получить его ASCii значение, так что я сделал это, но он не работает:

for (int i = 0; i < letters.length; i++) { 
    Integer iDecimal = (int) a[0]; // the a[0] is wrong!! 

    System.out.print(iDecimal); 
} 

Любые идеи о том, как бросить в таких случаях?

+0

Псевдокод не очень помогает. Я не знаю, были ли ваши проблемы с синтаксическими ошибками, поскольку то, что вы показываете здесь, не будет компилироваться. – Phylogenesis

+1

Вы не можете наложить строку на 'int'. Либо измените тип вашего массива на 'char', либо получите первый символ строк через' charAt (0) ', а затем либо передайте int или box в' Character', и получите кодовую точку этого символа (необходимо для unicode). – Thomas

+0

Я думаю, что когда вы говорите «значение ASCII», вы на самом деле имеете в виду [кодовый пример] (http://unicode.org/glossary/#code_point) или [блок кода] (http://unicode.org/glossary/#code_unit) , Использование «ASCII» типа «[Kleenex] (https://en.wikipedia.org/wiki/Generic_trademark)» очень сбивает с толку. –

ответ

0

Вы пытаетесь создать [0], который не существует, чтобы получить доступ к вашему массиву, вам нужно сделать буквы [0], а затем попробуйте работать с ним. Я предлагаю изменить тип вашего массива на char, а затем выполнить его, вы не можете сделать это со String.

0

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

Object letters [] = {5, "b", 'c'}; 

Массив объектов содержит целое число, строку и символ, который затем может перебрать массив и проверить, какой тип объекта вы имеете. Целочисленный элемент автобоксирован в Integer-Object.

Но снова я бы не рекомендовал это делать, поскольку тестирование элементов дорого.

for (int i = 0; i < letters.length; i++) { 
    if (a[i]) instanceof Integer) 
     Integer iDecimal = (Integer) a[i]; 
} 
+0

Я считаю, что если я использую структуру, это будет лучше, так как мне нужно использовать разные типы. –

0

Предполагая, что вы хотите просто код ASCII для первого символа в каждой строке в массиве, то вы можете получить доступ, что полукокс затем бросьте его в междунар.

for (int i = 0; i < letters.length; i++) { 
    int iChar = (int) letters[i][0]; 

    System.out.print(iChar); 
} 

letters[i] является я-й строки в массиве букв.

letters[i][0] является первым символом я-й строки в массиве букв, и будет типа char.

(int)letters[i][0] - целочисленное значение, эквивалентное первому символу строки i th в массиве букв.

Строго это даст первое слово UTF-16 в строке, но для значений < 127 оно будет таким же, как значение ASCII.

ints не являются десятичными значениями, поэтому не называйте их десятичными знаками. Тип BigDecimal используется для десятичных значений.