2015-11-28 8 views
0

Получение ошибки: требуется массив, но найдена строка. Я проверил и перепроверял, но не смог найти ничего плохого в моем коде. Что случилось? Я был представлен в java год назад, но только когда я начал работать над проектом по разработке системы управления библиотекой, я понимаю серьезные недостатки в своих знаниях.Ошибка компилятора: требуется массив, но найдена строка

import java.util.Scanner; 

public class library{ 
book[] bk = new book[5]; 

public static void main(String[] args){ 
    Scanner input = new Scanner(System.in); 
    library mainObj = new library(); 

    mainObj.addBooks(); 
} 

public void addBooks(){ 
    Scanner input = new Scanner(System.in); 

    System.out.print("Book Name: "); 
    String bk = input.nextLine(); 

    System.out.print("Author Name: "); 
    String aun = input.nextLine(); 

    System.out.print("Id: "); 
    String i = input.nextLine(); 

    bk[book.getTotalBookCount()] = new book(bk, aun, i); 
} 

} 

class book{ 
String name; 
String authorName; 
String id; 
static int totalBookCount = 0; 

book(String bkn, String aun, String i){ 
    name = bkn; 
    authorName = aun; 
    id = i; 
    totalBookCount++; 

    System.out.println("Book Added!! "); 
} 

} 
+1

Предоставьте [mcve] (обратите внимание на «минимальное»), по крайней мере, указав на место ошибки. –

+0

library.java:39: error: array required, но String found \t \t bk [book.getTotalBookCount()] = новая книга (bk, aun, i); \t \t^ 1 ошибка – ooodddbbb

+0

@AlexeiLevenkov alrighty. – ooodddbbb

ответ

2

String bk = input.nextLine();

Вы затенения book[] bk с этой переменной. Либо измените имя одного из них, либо используйте его вместо этого.

this.bk[book.getTotalBookCount()] = new book(bk, aun, i);

+0

Yikes! Это была глупая ошибка. – ooodddbbb

+0

Спасибо Sarvadi! – ooodddbbb

1

Вы используете bk переменную дважды. Однажды сверху, объявляя массив book[] bk = new book[5]; и один раз в addBooks functionString bk = input.nextLine(); в третьей строке.

1

Вы использовали bk дважды для двух разных типов, например, для книжного массива, а другой для строки. И в этих типах столкновений местный тип получает приоритет, поэтому

bk[.....] = ......; 
^^^^^ 
Here, `bk` will be considered as string, but we are using `[]` brackets with it, hence the error: array required, string found. 
Смежные вопросы