2015-02-05 2 views
1

Я пытаюсь запустить эту программу, которая должна содержать класс Building, который распространяется на 2 других класса TradeCenter и SportCenter. Программа должна распечатать информацию для 3 зданий (массив). Проблема в том, что я продолжаю получать эту ошибку Incompatible types issue для int в массиве, и я не уверен, как ее исправить, так как я новичок. Кто-нибудь может помочь?Проблема с несовместимыми типами

class Building { 
    String Name; 
    String Addres; 
    private int floors; 

    Building(String N, String A, int F) { 
     Name = N; 
     Addres = A; 
     floors = F; 
    } 

    public void SetFloors(int f) { 
     if (f <= 0) 
      floors = 1; 
     else 
      floors = f; 
    } 

    public int GetFloors() { 
     return floors; 
    } 

    void Print() { 
     System.out.print("Name=" + Name + "Addres=" + Addres + "floors=" + floors); 
    } 
} 

class TradingCenter extends Building { 
    String Owner; 
    String Brands[] = {"Brand"}; 

    TradingCenter(String N, String A, int F, String O, String B[]) { 
     super(N, A, F); 
     Owner = O; 
     Brands = B; 
    } 
} 

class SportCenter extends Building { 
    String Sports[] = {"Sport"}; 
    String Teams[] = {"Team"}; 

    SportCenter(String N, String A, int F, String S[], String T[]) { 
     super(N, A, F); 
     Sports = S; 
     Teams = T; 
    } 
} 

class DemoBuilding { 
    public static void main(String args[]) { 
     Building arr[] = new Building[3]; 
     arr[0] = new TradingCenter("Mall Plovdiv", "Smirnenski", 3, "Unknown", "Brand"); 
     arr[1] = new SportCenter("ATLETIK", "Trakia", 1, "Sport1", "Team3"); 
     arr[2] = new TradingCenter("Paradise Mall", "Sofia, bul. Cherni vruh 100", 5, "Unknown", "Brand"); 
     for (int i = 0; i < arr.length; i++) 
      arr[i].Print(); 
    } 
} 
+1

сообщение точное сообщение об ошибке, которое включает в себя номера строк. Кроме того, соглашение Java должно начинать имена методов с нижнего регистра, а инструменты будут более полезными, если вы будете следовать этому соглашению. – chrylis

+0

'" (int) 3 "' является строкой, а не int. Вместо этого используйте только «3». И «Brand 2» - это просто String, а не массив String. Это должно быть исправлено. – Tom

+0

Я пробовал, но возникла такая же ошибка –

ответ

2

Поскольку вместо того, чтобы передавать параметр int as, вы фактически передаете строку. Кроме того, вместо передачи строки [] вы просто передаете строки.

Ваше определение TradingCenter конструктора

TradingCenter(String N, String A, int F, String O, String B[]) 
// 3rd argument is supposed to be of type int here and the last(5th) argument is supposed to be of type String[] 

Ваше определение Sportcenter конструктора

SportCenter(String N, String A, int F, String S[], String T[]) 
// 3rd argument is supposed to be of type int here and the second-last(4th) and the last(5th) argument is supposed to be of type String[] 

Проверить это: -

arr[0]=new TradingCenter("Mall Plovdiv","Smirnenski","(int)3","Unknown","Brand 2"); 
// "(int)3" is a String,not int; "Brand 2" is not a String Array 
arr[1]=new SportCenter("ATLETIK","Trakia","(int)1","Sport 1","Team 3"); 
// "(int)1" is a String,not int; "Unknown" & "Brand 2" are Strings,not the String[] 
arr[2]=new TradingCenter("Paradise Mall","Sofia, bul. Cherni vruh 100","(int)5","Unknown","Brand 2"); 
// "(int)5" is a String,not int; "Brand 2" is not a String Array 

Чтобы просто использовать 3,1 , 5 как целое число, проход 3,1,5 непосредственно без кавычек в конструкторе, вызывающем.

Кроме того, использовать "Unknown" и "Марка 2", как String [], передать их как новый String [] { "Unknown} и новый String [] {" Марка 2" } в конструкторе.

+0

Прежде чем я попытаюсь с (int), я попробовал только номер, и появилась такая же ошибка ... –

+0

@ DanielaGocheva. Поскольку у вас также есть ошибка при передаче массивов String, пожалуйста, проверьте мое последнее изменение. В моем последнем абзаце суммируется то, что вы должны сделать, чтобы избежать ошибки. –

+0

Только что обновил код ... Я продолжаю получать ошибки на Брендах ... –

0

передается значение String, то есть «(целое) 3». Все, что внутри «» рассматривается как String. Но ваш конструктор excepts целочисленное значение. так что либо изменить параметр constuctor для String или передать его как целое (без кавычек).

P.S. Если вы хотите преобразовать String в int, используйте Integer.parseInt (str); , например.

String str = "8"; 
int i = Integer.parseInt(str); 

Значение I в настоящее время 8.

+0

Отлично! Это сработало, но теперь у меня проблемы для String не могут быть преобразованы в String []. И если я удалю «», я получаю ошибку; ожидается ... –

0

Конструкторы вы используете в вашей основной метод не совпадают с типами перечисленных в классах.

Вы пытаетесь построить TradingCenter в основном методе с пятью последовательными параметрами строки, но, ваше определение класса Торгового Центра призывает:

(String, String, Int, String, String [])

Аналогичная проблема возникает с SportCenter ... конструктор не соответствует определению класса.

1

Вы используете это заявление

arr[1] = new SportCenter("ATLETIK", "Trakia", "(int)1", "Sport 1", "Team 3"); 

"(int)1" Это не преобразовать строку в целое число, оно по-прежнему является строка.

Использование Это везде, где требуется

arr[1] = new SportCenter("ATLETIK", "Trakia", 1, "Sport 1", "Team 3"); 

и для разбираемой строки в Integer

Integer inputAsInteger=Integer.parseInt(InputString) 

Update

Другая ошибка вы передаете Строка в ул ИНГ массив

Вам необходимо пройти как этот

arr[1] = new SportCenter("ATLETIK", "Trakia", 1, new String[]{"Sport 1"}, new String[]{"Team 3"}); 
+0

Отлично! Это сработало, но теперь у меня проблемы для String не могут быть преобразованы в String []. И если я удалю «», я получаю ошибку; ожидается ... –

+0

@shekharsuman моя ошибка, спасибо, что указала, что я ее исправил, на самом деле не видел. –

+0

@shekharsuman, где я думаю, что 'new String [] {« Team 3 »}' отлично подходит , и это скобки для полного вызова конструктора не для этого массива –