2016-03-09 5 views
1

Я пытаюсь создать массив символов, но получаю ошибку каждый раз, когда запускаю свой код. Это мой код:Помощь Char Array

public static int namevalue(String name){ 
    char[] charval={'', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; 
    char let; 
    int val=0; 
    int letter; 
    int total=0; 
    int character; 
    for (letter=0;letter<name.length();letter++){ 
     let=name.charAt(letter); 
     if (charval[letter]==let){ 
      total+=letter; 
     } 
     total+=val; 
    } 
    return total; 
} 

И это ошибка я получаю (main.java:10 это строка с массив символов):

main.java:10: ошибка: пустая литера char [] charval = {'', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', ' 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W ',' X ',' Y ',' Z '};

Существует стрелка, указывающая на «S», «часть моего кода в отладчике», и я не уверен, почему. Если я удалю эту часть, сделав ее «R», «T», «та же ошибка покажет, но указала на« T ». Может кто-нибудь, пожалуйста, помогите мне и скажите мне, почему? Насколько я могу судить, это тот же формат, что и другие буквы, которые не имеют проблемы.

спасибо

+4

Там нет пустой литеры ('«» '). Удалите это, и ваш код является законным. 'char [] charval = {/ * '', */'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', ' 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V ',' W ',' X ',' Y ',' Z '}; ' –

+0

Почему они не являются ошибкой до тех пор, пока не появится' s '? – Sal

+0

Либо удалить первое значение '' ''или вставить пробел между одиночными кавычками, в зависимости от того, хотите ли вы, чтобы первое значение в' charval' было пробелом или нет. –

ответ

0

Многое, как то, что было прокомментировано ранее, нет никакого буквального «». Но вы можете сохранить значение NULL там, если вам нужно оставить это место открытым для пустой строки.

char[] charval={'\u0000', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; 

Значение для символа «NULL» в java - «\ u0000». Это значение по умолчанию для символа. Это было вытащено от what's the default value of char?.

+0

этот код не компилируется, и вы не можете назначить 'null' в примитивный тип, такой как' char'. –

+0

Нет. Это не законная Java. 'null' не' NULL'. И 'char' не может быть« null ». Это может быть '\ 0'. –

+0

import static java.sql.Types.NULL; Этот импорт удаляет ошибки компиляции. – DarkJade

0

Я получил это запустить, добавив пробел с первым пустым значением:

char[] charval = {' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; 

Надеется, что это помогает.

-1

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

char[] charval = new char[] {' ', 'A', 'B', 'C'...}; 

хотя это немного более многословным ...