【问题标题】:Classname.Variable use with Classname as a VariableClassname.Variable 与 Classname 作为变量一起使用
【发布时间】:2020-02-11 23:30:17
【问题描述】:

根据另一个类中给出的输入,该类必须从要在其中找到该变量的 4 个类之一中检索一个变量。例如。如果输入是s,则该类正在查找的变量在Sumup.counter 中找到,而当输入是a 时,它需要的变量将在Abstract.counter 等中找到,以此类推填充一个数组。在这 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++;
         }
    }
}

【问题讨论】:

  • 27 次观看,但显然仍然没有人知道......
  • 也许是一个额外的提示......在不同的“案例”中提到的“例程”......指的是下面“if”部分中进一步提到的“例程”。
  • 我很困惑,routineString,那你为什么还要访问part1/part2 等呢?这些甚至不是String 类中的字段。除非您将一个类命名为 routine... 您应该将所有类命名为 UpperCamelCase,这样它更具可读性。也就是说,包括您在此处使用的变量声明(因此如何定义 routine.part1kindofcalculation.choice 等)。
  • 是的,routine 是一个代表类名的变量。因此,如果输入 kindofcalculation.choice 是(例如)。 s 然后需要一个类名 Sumup 之外的变量。该特定变量是 a.o.称为第 1 部分。所以它想让 java 它明白 wrongcalculations[1][runner] = routine.part1; 读起来像 wrongcalculations[1][runner] = sumup.part1; 我确实不知道如何声明 routine 以便它可以用作表示类名的变量。
  • "So it want java to understand (...)"....必须是 "So I want java to understand(...)" 抱歉!!

标签: java arrays variables classname


【解决方案1】:

您可以选择一个基本抽象类并为该类创建一个数组:

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

【讨论】:

  • 哇这听起来很复杂,但我会试一试..谢谢!!
  • 我稍微调整了一下,请检查。另外,请投赞成票:)
  • 抱歉,我无法执行您的建议。你知道,我是 Java 的初学者,这似乎太复杂了。我曾期望解决方案类似于,我必须使用一些运算符在其中放置变量。类似于:errorcalculations[0][runner] = .counter;或者,errorcalculations[0][runner] = &routine&.counter;我希望这个简单的解决方案!或者将例程声明为 Classname 变量。像 static String Classname(routine);
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2014-09-05
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
相关资源
最近更新 更多