1

わかりました、Book という名前の別のクラスを使用するこのクラス Libray があります。配列インベントリ内のオブジェクト ブックを消去するメソッドを作成したいのですが、メソッドの戻り値を宣言する方法がわかりません。オブジェクト ライブラリを返して、すべてのブックを表示する別のクラスで使用したいと考えています。初期化。num 変数は、別のクラスのユーザーによって指定され、消去する本の番号を表します。配列のインベントリは 0 から 9 までです。

public class Library {

 private Book[] inventary;
 private int     booksquantity;

 public Library eraseBook(int num){
    for(int i=0 ; i<booksquantity ; i++){
         if(i == num-1){
            for(int j = i ; j<booksquantity ; j++){
                inventary[j] = inventary[j+1];}
         }          
   }return ***;
 }  
}

//他のクラスでは、このメソッドeraseBookを//スイッチで使用するために、このようなものを作成します

case 6: 
                    AppLibrary.cleanscreen();//Static method to erase the screen
                    System.out.println("What book do u wish to delete?");
                    String inventary = ghandi.generateInventory();//this makes the        //inventory to the user
                        if(inventary.equals("")){
                            System.out.println("No books available in the inventary");
                        }
                        else{
                            System.out.println(inventary);
                        }
                    int num = Integer.parseInt(s.nextLine());//here i read from the //keyboard the number of book the user wants to delete
//Here the object libary is caled "ghandi"
                    ghandi.eraseBook(num);//here i use the method
                    System.out.println("Book erase, please display inventary again");
                   s.nextLine();
                    break;

ありがとう!!

4

4 に答える 4

2

void何も返したくない場合に使用します(ここではそうだと思います)。

現在のオブジェクト (つまり、削除したばかりの現在のライブラリ) を返したい場合は、thisキーワードを使用します。

于 2013-09-07T17:54:04.933 に答える
0

コンストラクター Library(Book[] inventary, int booksquantity) を追加し、return メソッドで呼び出します。

public class Library {

 private Book[] inventary;
 private int     booksquantity;

 public Library(Book[] inventary, int booksquantity){
    this.inventary = inventary;
    this.booksquantity = booksquantity;
 }

 public Library eraseBook(int num){
    for(int i = 0; i<booksquantity ; i++){ 
       if((inventary[i] == inventary[num-1]) && (inventary[i+1] != null)){
           inventary[i+1]= inventary[i];
       } else if(inventary[i] == inventary[num-1]){
           inventary[i] = null;
       }
   } 
      return new Library(inventary, booksquantity);
 }  
}

本を消去したいだけで、クラス全体を不変にしたくない場合。

public class Library {

 private Book[] inventary;
 private int     booksquantity;

 public Library(Book[] inventary, int booksquantity){
    this.inventary = inventary;
    this.booksquantity = booksquantity;
 }

 public void eraseBook(int num){
    for(int i = 0; i<booksquantity ; i++){ 
       if((inventary[i] == inventary[num-1]) && (inventary[i+1] != null)){
           inventary[i+1]= inventary[i];
       } else if(inventary[i] == inventary[num-1]){
           inventary[i] = null;
       }
   } 
 }  
}
于 2013-09-07T17:54:56.157 に答える
0

void返品したくない場合に使用します。

于 2013-09-07T18:56:51.590 に答える