2016-04-06 5 views
1

Я пытаюсь написать класс Java, который должен быть как можно короче (по линии). В моем классе, у меня есть следующий код:Hardcode a Array in a Loop

char[] myArray = {'a', 'b', 'c', 'd'}; 
for(char c : myArray) ... 

Для того, чтобы сделать это короче, так как я всегда буду итерация одних и тех же символов, я думал, что я мог бы быть в состоянии сделать что-то вроде этого:

for(char c : {'a', 'b', 'c', 'd'}) ... 

Однако это не работает, и я не могу найти что-либо в сети, чтобы показать мне, как это сделать (я не уверен, что искать это).

Возможно ли это по-другому? Или это не может быть сокращено?

+0

Почему класс должен быть коротким (насколько это возможно)? – AlexWien

ответ

2

Если символы образуют последовательный шаблон, вы можете просто использовать

for (char c = 'a'; c <= 'd'; c++) 

Если это не так, вы могли бы использовать

for (char c : new char[] {'c', 'a', 'b'}) 

или

char[] arr = {'c', 'a', 'b'}; 
for (char c : arr) 

или

for (char c : "cab".toCharArray()) 
+0

Из последних 3 (мои символы не последовательны), знаете ли вы, что было бы наиболее эффективным? – Haych

+0

@ Хайч Нет, я не боюсь - я очень мало знаю о таких вещах. Я сомневаюсь, что это последнее, поскольку для этого нужны как 'String', так и' char [] '. –

+1

Хорошо, спасибо за помощь! – Haych

5

Вам нужен идентификатор типа для массива Aswell в

for(char c : new char[] {'a', 'b', 'c', 'd'}) { 
    ...  
} 
3

Что вы после for(char c : new char[] {'a', 'b', 'c', 'd'}) ... синтаксис без new char[] только для удобства, если они используются в определении переменной, поскольку есть тип может быть ясно.

2

Вы можете сделать это следующим образом:

for(char c : new char[]{'a', 'b', 'c', 'd'}) ... 
1

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

char[] a={'a','b','c','d'}; for(char c:a) ...