首页 > 解决方案 > Classname.Variable 与 Classname 作为变量一起使用

问题描述

根据另一个类中给出的输入,该类必须从要在其中找到该变量的 4 个类之一中检索一个变量。例如。如果输入是s这个类正在寻找的变量,Sumup.counter而当输入是a它需要的变量时,将在Abstract.counteretc 等中找到,以填充数组。在这 4 个不同的类别之一中,它必须选择 5 个不同的变量。因此,为了避免大量额外的编程,我想用一个变量替换这些类SumupAbstract。所以它必须看起来像这样Variable.counterVariable.part1等等。其中变量可以是SumupAbstract(或MultiplyDivide)。

任何人建议如何做到这一点?

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++;
         }
    }
}

标签: javaarraysvariablesclassname

解决方案


您可以选择一个基本抽象类并制作该类的数组:

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++;
         }
    }
}

推荐阅读