Classname.Variable 与 Classname 作为变量一起使用

Posted

技术标签:

【中文标题】Classname.Variable 与 Classname 作为变量一起使用【英文标题】:Classname.Variable use with Classname as a Variable 【发布时间】: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(...)" 抱歉!! 【参考方案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);

以上是关于Classname.Variable 与 Classname 作为变量一起使用的主要内容,如果未能解决你的问题,请参考以下文章

public clas和class的区别

Google Clas-s-room API - 权限被拒绝

inner calss and anonymous clas 得区别

Google Clas-s-room Apps 脚本 - CourseWork.list 权限错误

Google Clas-s-room API 修改附件

(403) 请求的身份验证范围不足 - OAuth 范围 Google Clas-s-room API