Classname.Variable использовать с Classname в качестве переменной - PullRequest
0 голосов
/ 15 октября 2019

В зависимости от входных данных, данных в другом классе, этот класс должен извлечь переменную из одного из 4 классов, в которых эта переменная должна быть найдена. Например. если входное значение было s, то переменная, которую ищет этот класс, находится в Sumup.counter, тогда как, когда входное значение было a, переменная, в которой он нуждается, должна быть найдена в Abstract.counter и т. д., чтобызаполнить массив. В одном из этих 4 разных классов нужно выбрать 5 разных переменных. Поэтому, чтобы избежать большого количества дополнительного программирования, я хочу заменить эти имена классов Sumup и Abstract на переменные. Таким образом, он должен выглядеть примерно так: Variable.counter, Variable.part1 и т. Д. В котором переменная может быть либо Sumup, либо Abstract (или Multiply, либо Divide).

Anyone aпредложение как это сделать?

public class Erroranalysis {

    public static int[][] wrongcalculations = new int[5][Numberofcalculations.numcalc]; 

    static int runner = 0;
    static String routine;

    public static void main(String[] args) 
    {
        switch (kindofcalculation.choice) 
        {
         case "s":
             routine = "Sumup";
         break; 

         case "a":
             routine = "Abstract";
         break; 

         case "m":
             routine = "Multiply";
         break;     

         case "d":
             routine = "Divide";
         break; 
         }   

         if (routine.counter <= Numberofcalcluations.numcalc)
         {

             wrongcalculations[0][runner] = routine.counter;
             wrongcalculations[1][runner] = routine.part1;
             wrongcalculations[2][runner] = routine.part2;
             wrongcalculations[3][runner] = routine.result;
             wrongcalculations[4][runner] = routine.answer;


             runner++;
         }
    }
}

1 Ответ

0 голосов
/ 15 октября 2019

вы можете выбрать базовый абстрактный класс и создать массив этого класса:

class Base{
  public int counter = 0;
}
class Sumup extends Base{
}
class Abstract extends Base{
}


public class Erroranalysis {

    public static int[][] wrongcalculations = new int[5][Numberofcalculations.numcalc]; 

    static int runner = 0;
    static Base routine;
    static Sumup sumup;
    static Abstract abs;

    public static void main(String[] args) 
    {
        sumup = new Sumup();
        abs = new Abstract();

        // possibly, this part won't be in main, but in some for loop of another method
        switch (kindofcalculation.choice) 
        {
         case "s":
             routine = sumup;

         case "a":
             routine = abs;

         }   

         if (routine.counter <= Numberofcalcluations.numcalc)
         {

             wrongcalculations[0][runner] = routine.counter;
             wrongcalculations[1][runner] = routine.part1;
             wrongcalculations[2][runner] = routine.part2;
             wrongcalculations[3][runner] = routine.result;
             wrongcalculations[4][runner] = routine.answer;

             runner++;
         }
    }
}
...