Метод не виден, помогите ??Джава - PullRequest
0 голосов
/ 13 декабря 2011

У меня проблема с методом, который невидим для другого класса, и я не могу понять это. У меня есть класс Shopping_Basket, у которого есть список товаров (товар - это класс). Я пытаюсь получить список товаров в классе Shopping_basket для достижения метода getItemCost в классе товаров. Однако я получаю сообщение об ошибке, что метод не виден ... Я не могу понять, что не так:

public class Shopping_Basket { 
   private List<Merchandise> basket;
   public List<Merchandise> getList() {
    return basket;
}

   public Shopping_Basket() {
    basket = new ArrayList<Merchandise>();
   }
   public double getTotalCost() {
    double j = 0; 
    for (int i = 0; i < this.getList().size(); i++){            
         j += basket.get(i).getItemCost();
    }
    return j;
}

Вот класс товаров:

public class Merchandise {
private String item_name;

private int item_cost;

public Merchandise(String name, int cost) {
    this.item_name = name;
    this.item_cost = cost;
}
public String getItemName() {
    return item_name;
}

public double getItemCost() {
    return item_cost;
}

Итак, ошибка в методе getTotalCost (), в котором говорится, что getItemCost () не видна ... help?

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Ваш код в порядке, и фактически компилируется и выполняется нормально. См. Ниже и проверьте, правильно ли вы все сделали (я только что добавил main() метод для выполнения вашего кода):

$ cat > Merchandise.java
public class Merchandise {

        private String item_name;

        private int item_cost;

        public Merchandise(String name, int cost) {
                this.item_name = name;
                this.item_cost = cost;
        }

        public String getItemName() {
                return item_name;
        }

        public double getItemCost() {
                return item_cost;
        }
}

$ cat > Shopping_Basket.java
import java.util.ArrayList;
import java.util.List;

public class Shopping_Basket {

        private List<Merchandise> basket;

        public List<Merchandise> getList() {
                return basket;
        }

        public Shopping_Basket() {
                basket = new ArrayList<Merchandise>();
        }

        public double getTotalCost() {
                double j = 0;
                for (int i = 0; i < this.getList().size(); i++) {
                        j += basket.get(i).getItemCost();
                }
                return j;
        }

        public static void main(String[] args) {
                Shopping_Basket sb = new Shopping_Basket();
                System.out.println(sb.getTotalCost());

        }

}

$ javac Shopping_Basket.java

$ java Shopping_Basket
0.0

Итак, как я сказал, и, как вы можете видеть, код хорош. Для компилятора, по крайней мере, потому что есть пара вещей, на которые нужно указать:

  • В Merchandise, item_cost является int, но getItemCost() возвращает double
  • Имя вашего класса Shopping_Basket должно быть изменено на что-то вроде ShoppingBasket
1 голос
/ 13 декабря 2011

Я не вижу ничего плохого, этот код должен компилироваться и фактически компилируется на моем компьютере. Пожалуйста, попробуйте очистить ваш проект в вашей IDE и снова скомпилировать весь проект.

0 голосов
/ 13 декабря 2011

Классы правильные. Метод публичный, поэтому он виден. Может быть, проблема установки пути к классам или импорта классов.

public class Merchandise {
private String item_name;

private int item_cost;

public Merchandise(String name, int cost) {
    this.item_name = name;
    this.item_cost = cost;
}

public String getItemName() {
    return item_name;
}

public double getItemCost() {
    return item_cost;
}

}

import java.util.ArrayList;

import java.util.List;

публичный класс Shopping_Basket { личный список корзин;

public List<Merchandise> getList() {
    return basket;
}

public Shopping_Basket() {
basket = new ArrayList<Merchandise>();

}

public double getTotalCost() {
    double j = 0;
    for (int i = 0; i < this.getList().size(); i++) {
        j += basket.get(i).getItemCost();
    }
    return j;
}

public void addMerchandise(Merchandise m){
    basket.add(m);
}

public static void main(String[] args) {
    Merchandise m1 = new Merchandise("prova", 11);
    Merchandise m2 = new Merchandise("prova2", 13);

    Shopping_Basket sb = new Shopping_Basket();

    sb.addMerchandise(m1);
    sb.addMerchandise(m2);

    System.out.println(sb.getTotalCost());
}

}

...