2015-11-15 6 views
0

я был кодирования программы для школы в Java с Eclipse, и я получил проблему с выходом, код выглядит следующим образом:Странный вывод на стандартный вывод с Java

public class Main { 
    public static boolean[] cercaK(int k , String[] a){ 
     boolean b[] = new boolean[a.length]; 
     int conta = 0; 
     for(int i = 0; i < a.length; i++){ 
      b[i] = false; 
      int j = 0; 
      while(j < a[i].length()-1 && !b[i]){ 
        if(a[i].charAt(j)==a[i].charAt(j+1)) 
         conta++; 
        else 
         conta = 0; 
        if (conta == k) 
         b[i] = true; 
        j++; 
      } 
     } 
     return b; 
    } 
    public static void main(String[] args) { 
     String[] a = {"accesso","bbtcrryy","ggg"}; 
     int k = 2; 
     if (k<=0) 
      System.out.println("Errore!"); 

     boolean[] b = cercaK(k,a); 

     for(int i = 0; i < b.length; i++) 
      System.out.print(b); 
    } 
} 

И выход действительно странно:

[[email protected][[email protected][[email protected] 

Я не могу понять, откуда взялись эти струны. Может ли кто-нибудь мне помочь? Благодаря!

EDIT: Я нашел ошибку,

for(int i = 0; i < b.length; i++) 
      System.out.print(b[i]); 
+0

Ровно. Вы не печатали элементы массива, вы вызывали его напрямую. GJ! ;) – xFunkyTImes

ответ

0

Изменить

for(int i = 0; i < b.length; i++) 
    System.out.print(b); 

в

for(int i = 0; i < b.length; i++) 
    System.out.print(b[i]); 

Так, чтобы напечатать элементы в буях, а не сам массив.

0

Это потому, что тип b - boolean[]. Когда вы пытаетесь распечатать массивы, вы можете ожидать аналогичный вывод. Это правильный способ печати всех элементов:

for(int i = 0; i < b.length; i++) 
     System.out.print(b[i]); 

По желанию, вы можете использовать for-each цикл:

for(boolean var: b) { 
    System.out.println(var); 
} 
Смежные вопросы