2017-02-26 11 views
0

私はプログラムを持っており、書籍のコストを40%削減しようとしています。今、私の問題は、配列内のすべての本ではなく、特定の本を減らすことができるということです。メソッドを配列内のすべての要素に移動させる方法が不明です。私は例えば[0]に0があるのでインデックスを変更していることを知っています。私の質問は私が何をしているのかということであり、それは1つのインデックスだけでなく、配列全体を並べ替えます。これは、reduceBookメソッドで発生しています。本の配列によって配列内のすべての要素を変更する必要がありますが、インデックスだけが変更されていますJava

public static void main(String[] args) { 

    Book[] bookArray = new Book[6]; 

    bookArray[0] = new Book("Java Proramming", "Liang", 1320, 145.00); 
    bookArray[1] = new Book("Horton Hears a Who", "Dr. Seuss", 72, 19.99); 
    bookArray[2] = new Book("The Hobbit", "Tolkien", 320, 9.25); 
    bookArray[3] = new Book("Born a Crime", "Noah", 304, 17.33); 
    bookArray[4] = new Book(); 
    bookArray[5] = new Book(); 

    for(Book b : bookArray) 
     System.out.println(b); 
    finishArray(bookArray); 
    System.out.println("\nThis is a space between the old array and the new finished one "); 
    for(Book b : bookArray) 
     System.out.println(b); 

    System.out.println("\nThis should print out the discounted books "); 
    reduceBooks(bookArray); 
    for(Book b : bookArray) 
     System.out.println(b); 
} 

// public void finishArray(String[] Book) { 
public static void finishArray(Book[] bookara) { 
    bookara[4].setTitle("The Town"); 
    bookara[4].setAuthor("Chuck Hogan"); 
    bookara[4].setPages(477); 
    bookara[4].setPrice(14.99); 
    bookara[5].setTitle("Cat and Mouse"); 
    bookara[5].setAuthor("James Patterson"); 
    bookara[5].setPages(358); 
    bookara[5].setPrice(9.99); 
} 
public static Book reduceBooks(Book[] reduceAra) {//This is the trouble area 
    Book bookReduce = reduceAra[0]; //So here if I change the index 
//it will reduce the book in it by 40% but I need to reduce all the books in the array. 
    double price = bookReduce.getPrice(); 
    for (int i = 0; i < reduceAra.length; i++) { 

     double reducedPrice = price * .60; 
     bookReduce.setPrice(reducedPrice); 
    } 

    return bookReduce; 

} 

答えて

1

だけループあなたは印刷するが、代わりにコストに

for(Book b : bookArray) { 
    b.setPrice(b.getPrice() * 0.6) 
} 
+0

問題が戻り値です。常に[0]を返します。 OPは配列を返すか、関心のあるインデックスを渡す必要があります。 forループは役に立ちません – efekctive

+0

これは非常に簡単に解決します。助けてくれてありがとう。 – Boomboxcity

+0

@Boomboxcityあなたのforループが役に立たないコードを見てください。目的のない配列に対してハードコーディング[0]しています。インデックスを渡すか、配列を返す必要があります – efekctive

0

を下げるあなたはメソッドをコーディングすることができなかったように、このようにreduceBook:

public static void reduceBooks(Book[] reduceAra) {  
    for (int i = 0; i < reduceAra.length; i++) {  
      Book bookReduce = reduceAra[i]; 
      double price = bookReduce.getPrice(); 
      double reducedPrice = price * .60; 
      bookReduce.setPrice(reducedPrice); 
    } 
} 

あるいは中よりコンパクトなスタイル:

public static void reduceBooks(Book[] reduceAra) { 
    for (int i = 0; i < reduceAra.length; i++) { 
     Book bookReduce = reduceAra[i]; 
     bookReduce.setPrice(bookReduce.getPrice() * 0.60); 
    } 
} 

ドミニクUbersfeld

0

だけループreduceBooks方法

public static Book reduceBooks(Book[] reduceAra) { 

     for(Book b : reduceAra){ 
      double price = b.getPrice(); 
     price = price * .60; 
     b.setPrice(price); 
    } 
     return bookReduce; 

    } 
関連する問題