2017-01-23 6 views
2

Я пишу программу Java в Eclipse. Допустим, я объявляю массив:Eclipse не печатает нулевой символ

char[] array = new char[5]; 

, а затем я инициализирую только несколько элементов. Когда я пытаюсь распечатать весь массив, Eclipse останавливается, когда неинициализированный элемент достигнут, и ничего не делает. С другой стороны, когда я компилирую его в терминале с помощью команды javac, он отлично работает и печатает пустые пространства для неинициализированных элементов (или я должен указать нулевые символы). Почему это происходит?

EDIT: вот полный код (программа находит вспомогательный массив, принимая только буквы от исходного)

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner input=new Scanner(System.in); 

    int n=4; 
    char[] array=new char[n]; 
    System.out.println("Input array elements: "); 
    for(int i=0; i<n; i++){ 
     array[i]=input.next().charAt(0); 
    } 
    char[] A=new char[n]; 
    int j=0; 
    for(int i=0; i<array.length; i++){ 
     if ((array[i]>=65 && array[i]<=90)||(array[i]>=97 && array[i]<=122)){ 
      A[j]=array[i]; 
      j++; 
     } 

    } 

    System.out.printf("subarray is A=[ "); 
    for(int i=0; i<n; i++){ 
      System.out.printf(A[i]+" "); 
    } 
    System.out.printf("]."); 
} 

, например, если вход st1p, он выводит [СТП и там останавливается. Не выполняет последнюю печать.

ответ

2

Ну это потому, что значение по умолчанию атрибута полукокса «\ u0000» (нулевой символ), как указано в спецификации языка Java, раздел § 4.12.5 Initial Values of Variables .

Я модифицировал и создал небольшой проект, который преобразует слово в строку и полностью распечатывает его. Он также печатает номера. Надеюсь, это поможет вам в том, что вы ищете. Конечно, вы можете создавать другие массивы символов и заполнять каждую вторую букву, третью и т. Д. И т. Д. И получать n-й грандиозный общий массив символов с каждой подстрокой от каждого слова. Как и вы.

public class stringToArray { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.println("Enter string: "); 
     String word = input.next(); 

     int index = word.length(); // get index of word to create array of exact length 
     char[] chars = new char[index]; // create the array of exact length 

     System.out.print("The char array from the String is: "); 
     for (int i = 0; i < chars.length; i++) { 
      chars[i] = word.charAt(i); // populate the char array with the word, by breaking the word in chars 

      System.out.print(chars[i] + " "); // print it to check that it is working 
     } 

    } 
} 
+0

Я использовал ваш бит кода, и он отлично работает. Но у меня все еще нет. Я поместил еще один оператор print вне цикла for для моего случая, и этот оператор никогда не выполняется. Не знаю, что я делаю неправильно. – sstefan

+0

Должен напечатать пустое место. Я пробовал теперь, вне цикла, путем печати: System.out.println (array [1]); и он печатает пустое пространство. поэтому он работает ... – zypa

+0

Вы работаете в eclipse? Потому что он печатает пробелы и для меня, кроме как в Eclipse, но в терминале – sstefan

Смежные вопросы