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 个不同的变量。所以为了避免大量额外的编程,我想用一个变量替换这些类名Sumup
和Abstract
。所以它必须看起来像这样Variable.counter
、Variable.part1
等。其中变量可以是Sumup
或Abstract
(或Multiply
或Divide
)。
任何人建议如何做到这一点?
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”部分中进一步提到的“例程”。 我很困惑,routine
是String
,那你为什么还要访问part1
/part2
等呢?这些甚至不是String
类中的字段。除非您将一个类命名为 routine
... 您应该将所有类命名为 UpperCamelCase
,这样它更具可读性。也就是说,包括您在此处使用的变量声明(因此如何定义 routine.part1
和 kindofcalculation.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] =以上是关于Classname.Variable 与 Classname 作为变量一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Google Clas-s-room API - 权限被拒绝
inner calss and anonymous clas 得区别