2015-02-01 3 views
-6

Код содержит 4 метода Dir является конструктор addDetails, чтобы получить сведения о компании, контактный номер и рейтинг для этой конкретной компании и хранить в массивах compName, compNumber и скорость соответственно
которые являются строки массива, Int массив и String соответственно.Какая ошибка в java-коде?

Метод getDetails принимает имя в качестве входных данных и печатает детали той или иной компании в качестве выхода

Аналогично getContact принимает название компании и дает контактный номер

public class Dir extends UnicastRemoteObject implements DirInterface { 

    Scanner sc=new Scanner(System.in); 
    public String compName[]=new String[50]; 
    public int compNumber[]=new int[50]; 
    public String Rate[]=new String[50]; 

    public static int k=0; 

    public Dir() throws RemoteException { 
     super(); 
    } 

    public void addDetails() { 
    System.out.println("Input company Details to add"); 
    compName[k]=sc.nextLine(); 

    System.out.println("input contact number of company"); 
    compNumber[k]=sc.nextInt(); 

    System.out.println("enter out of 5 for rating"); 
    Rate[k]=sc.next(); 

    k++; 
} 

public String getDetails(){ 
    System.out.println("Input company name to get its details"); 
    String name2=sc.next(); 

    for(int i=0;i<=(compName.length());i++){ 
     if(name2==compName[i]) 
      return compName[i]+" "+compNumber[i]+" "+Rate[i]+" rating"; 
    } 
} 

public int getContact(){ 
    System.out.println("Enter name of the company to get contact number"); 
    String name1=sc.nextLine(); 
    for(int i=0;i<=compName.length();i++){ 
     if(name1==compName[i]) 
      return compNumber[i]; 
    } 
} 
} 

Errors:error ';' expected Dir() throws RemoteException 
cannot find symbol for(int i=0;i<=compName.length();i++) 
symbol:method.length 

error:incompatible types 
location:return compNumber 
required int found String 

************SOLVED ERRORS OF THE ABOVE CODE************* 



public class Client{ 
public static void main(String args[]){ 
try{ 
DirInterface st=(DirInterface)Naming.lookup("rmi://"+args[0]+"/AddService"); 

st.addDetails(); 

String det=st.getDetails(); 
System.out.println(det); 

String xx=st.getContact(); 
System.out.println(xx); 

}catch(Exception e){ 

System.out.println(e); 
} 

} 


ERRORS:In Client class 
Illegal start of type try{ 
expected ';' 

Identifier expected 
st.addDetails(); 
sopln(det); 

catch}(Exception e){} 
class,interface or enum expected 
+1

** compName.length() ** должны быть ** ** compName.length потому, что его массив – Prashant

+0

Вы спрашиваете "что это ошибка". Об этом вам сообщает компилятор error essage. Не нужно спрашивать здесь. Просто прочитайте сообщение об ошибке из компилятора. И если вы этого не понимаете, тогда опубликуйте его. –

+0

ошибка в методе .length() – khakiout

ответ

-3

Вы объявили массив, как этот

Строковое имя [] = новое Строка [5788];

, но должен быть

String [] имя = новый String [5788];

+0

Я не думаю, что это проблема :) – Prashant

+0

Это то же самое – Confuse

+3

Второй способ - это предпочтительный способ объявления массивов в Java , но первый будет работать. –

1

Во-первых, метод length() используется для определения длины строки, а не массива.

Вы должны использовать lengthбез скобок, чтобы узнать длину массива, как это - compName.length

Тогда метод getContact должен быть строкой, как это -

public String getContact() ... 

EDIT

Кроме того, как указано Главный карандаш, name1==compName[i] должен быть name1.equals(compName[i]) как это сравнение строк.

1

Эта линия:

if(name2==compName[i]) 

не будет работать, как вы думаете, это работает. Не сравнить строки с ==, используйте equals() вместо:

if(name2.equals(compName[i])) 

См: How do I compare strings in Java?

+0

ty, который работал для меня – user4516526

0

Когда вы сравниваете строку, которую следует использовать Equals() метод вместо ==.

Для получения дополнительной информации перейдите по ссылке.

Compare String

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