Как можно использовать переменную объекта, который создается пользователем? (Java) - PullRequest
0 голосов
/ 30 марта 2020

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

public class perfo2{
     public int c;
     public int p;
     public int b;  
     public String n;
     perfo2(int c,int p,int b,String n){              //constructor
         this.c=c;
         this.p=p;
         this.b=b;
         this.n=n;
}

Теперь у меня есть несколько методов, которым требуется переменная из экземпляра, например: -


   public  int calculate(int c,int p,int b){
        int per= (int)((c+p+b/60*100)); 
        return per;
    }
   public  void  dis(int c,int p,int b,String n,int per){
        System.out.println("Name:"+n);
        System.out.println("Chemistry:"+c);
        System.out.println("Physics:"+p);
        System.out.println("Biology:"+b);
        System.out.println("Percentage:"+per+"%");

    } }

Теперь я хочу, чтобы эти методы фактически обращались к объекту за различными переменными и использовали их. Я знаю, что аргументы, которые я привел методам, не смогут этого сделать, но что будет? а также, если я создаю объект в самом коде, я могу легко получить доступ к переменным с помощью

michael.dis(michael.c,michael.p,michael.b,michael.n,michael.calculate(michael.c,michael.p,michael.b));

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Если я вас правильно понимаю; Вы хотите иметь доступ к переменным, установленным в конструкторе c, p, b, n. Вы должны быть в состоянии сделать это, создавая геттеры для каждой из переменных следующим образом:

public class perfo2 {
  public int c; // consider making the access modifier for c,p,b & n private
  public int p;
  public int b;
  public String n;

  perfo2(int c, int p, int b, String n) {   //constructor
    this.c = c;
    this.p = p;
    this.b = b;
    this.n = n;
  }

  public int getC() {
    return c;
  }

  public int getP() {
    return p;
  }

  public int getB() {
    return b;
  }

  public String getN() {
    return n;
  }
}  

// Create the object as such 
perfo2 person1 = new perfo2(1,2,3,"my String");
int c = person1.getC();
int p = person1.getP();
int b = person1.getB();
String n = person1.getN();

Вы также можете рассмотреть возможность сделать модификатор доступа для c,p,b & n private; следовательно, это не может быть доступно непосредственно из объекта. В зависимости от варианта использования вы также можете использовать person1.c et c

0 голосов
/ 30 марта 2020

Немного дополнительного кода к моему комментарию, вы можете использовать свой класс, как в этом примере. Возможно, вы могли бы добавить процент к вашим переменным класса, но я не хотел возиться с вашей логикой c

public class Perfo2 {
   private int c;
   private int p;
   private int b;
   private String n;

   Perfo2(int c, int p, int b, String n) { // constructor
      this.c = c;
      this.p = p;
      this.b = b;
      this.n = n;
   }

   public int calculate(Perfo2 perfo2) {
      return (perfo2.c + perfo2.p + perfo2.b / 60 * 100);
   }

   public void dis(Perfo2 perfo2,int per) {
      System.out.println(perfo2);
      System.out.println("Percentage:" + per + "%");
   }

   @Override
   public String toString() {
      return String.format("Name: %s%nChemistry: %s%nPhysics: %s%nBiology: %s", this.n ,this.c,this.p,this.b);
   }

   public static void main(String[] args) {
      Perfo2 p = new Perfo2(10,6,5,"Mark");
      p.dis(p, 70);;

   }
}
0 голосов
/ 30 марта 2020

Просто создайте объект и используйте его

perfo2 michael = new perfo2(c,p,b,n);

 michael.dis(michael.c,michael.p,michael.b,michael.n,michael.calculate(michael.c,michael.p,michael.b));
...