конфликт ч / б строка и строка [] - PullRequest
1 голос
/ 09 марта 2011

В основном у меня есть класс, в котором есть методы, которые используют массивы String, и я пишу метод в классе приложения для чтения файла и обновления массива объекта класса Customer.Я получаю сообщения об ошибках:]).Я понимаю, что он ищет строку [] и получает строку, но есть ли способ это исправить?Вот код, с которым я работаю.

    import java.io.*;
import java.util.*;

class Customer {

int account_id;
char[] ch1 = new char[20];
String name = new String (ch1);
char[] ch2 = new char[80];
String address = new String (ch2);
char[] ch3 = new char[10];
String phone_number = new String (ch3);
char[] ch4 = new char[8];
String date_of_birth = new String (ch4);
double account_balance;

public int get_accountid(){
       return account_id;
}

public String get_address(){
       return address;
}

public String get_phone_number(){
       return phone_number;
}

public String get_date_of_birth(){
       return date_of_birth;
}

public double get_balance(){
       return account_balance;
}

public void set_account_id(int num){
       account_id = num;
}

public void set_address(String add){
       address = add;
}

public void set_phone_number(String phone){
       phone_number = phone;
}

public void set_date_of_birth(String dob){
       date_of_birth = dob;
}

public void set_balance(double bal){
       account_balance = bal;
}
Customer(){ // default constructor
}

// parametrized constructor
Customer(int id, String name, String add, String dob, String num, double bal){
    this.account_id = id;
    this.name = name;
    this.address = add;
    this.date_of_birth = dob;
    this.phone_number = num;
    this.account_balance = bal;
}

}


     public class lab2{
     public static void main(String args[]){

     System.out.println("testing this shit");    
      }
      public static void readFile(String filename){
          Customer[] review = new Customer[30];
          int i=0; 
          Scanner scan = new Scanner (new File (filename));
          while (scan.hasNext()){

               while(i<30){

                      review[i].set_account_id(scan.nextInt());
                  String[] st = scan.nextLine().split("=");
                  review[i].set_address(st[1]);
                  st = scan.nextLine().spilt("=");
                      review[i].set_phone_number(st[1]);
                      st = scan.nextLine().split("=");
                      review[i].set_date_of_birth(st[1]);
                      //st = scan.nextLine().split("=");
                      review[i].set_balance(scan.nextDouble());
                      scan.nextLine();
                      i=i+1;
             }
        }
     }

   }

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

Ваш класс Customer выглядит как Java-бин. Я нахожу эти заявления подозрительными:

String[] name = new String [20];
String[] address = new String [80];
String[] phone_number = new String [10];
String[] date_of_birth = new String [8];

Почему вы хотите, чтобы Customer имел 20 имен, 80 адресов, 10 телефонных номеров и 8 дат рождения? Я подозреваю, что вы хотите сказать, что имя Customer длиной не более 20 символов, его / ее адрес длиной не более 80 символов и т. Д. Если это так, то вам не нужно String[], Вы можете хотеть чарса []!

Однако подумайте о том, чтобы сделать эти поля просто String: это кажется более естественным. Я не вижу причин, почему вы можете захотеть ограничить их размер.

1 голос
/ 09 марта 2011

Просто измените подпись вашего метода:

public void set_address(String add){
       address = add;
}

Или другой вариант: вы создаете новый объект String [] на основе вашего объекта String и передаете его:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...