首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在Java中使用动态变量/10亿if语句?

如何避免在Java中使用动态变量/10亿if语句?
EN

Stack Overflow用户
提问于 2014-02-23 18:01:38
回答 5查看 127关注 0票数 2

因此,由于动态变量在Java中不是一件事,而且如果语句将非常难以处理,那么它正在寻求帮助将这个代码块转换成一个更简洁的代码块。

我查看了hashmap,它们看起来不太正确,很可能是我误解了它们。

代码语言:javascript
复制
public String m1 = "Name1";
public String m1ip = "192.1.1.1";
public String m2 = "Name2";
public String m2ip = "192.1.1.1";
public String req;
public String reqip;

..。剪一些代码..。

代码语言:javascript
复制
if (requestedMachine == 1)
{ req = m1; reqip = m1ip;}
else if (requestedMachine == 2)
{ req = m2; reqip = m2ip;}
else if (requestedMachine == 3)
{ req = m3; reqip = m3ip;}
else if (requestedMachine == 4)
{ req = m4; reqip = m4ip;}
else if (requestedMachine == 5)
{ req = m5; reqip = m5ip;}

requestedMachine将是一个整数,它定义了应该分配给req & reqip的值。

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-23 18:04:54

定义一个机器类,包含一个name和一个ip字段。创建一个机器数组。访问位于索引requestedMachine的机器(如果数字从1开始,则访问requestedMachine - 1 ):

代码语言:javascript
复制
Machine[] machines = new Machine[] {
    new Machine("Name1", "192.1.1.1"),
    new Machine("Name2", "192.1.1.1"),
    ...
}
...

Machine machine = machines[requestedMachine - 1];
票数 8
EN

Stack Overflow用户

发布于 2014-02-23 18:05:24

首先,创建一个Machine类:

代码语言:javascript
复制
class Machine {
    String name;
    String ip;
    //Constructor, getters, setters etc omitted
}

初始化机器数组:

代码语言:javascript
复制
Machine[] machines = ... //initialize them with values

获取与requestedMachine对应的机器:

代码语言:javascript
复制
Machine myMachine = machines[requestedMachine];
票数 2
EN

Stack Overflow用户

发布于 2014-02-23 18:16:35

这是一个伟大的候选人的一个枚举:

代码语言:javascript
复制
/**
   <P>{@code java EnumDeltaXmpl}</P>
 **/
public class EnumDeltaXmpl  {
  public static final void main(String[] ingo_red)  {
     test(MachineAction.ONE);
     test(MachineAction.TWO);
     test(MachineAction.THREE);
     test(MachineAction.FOUR);
  }
  private static final void test(MachineAction m_a)  {
     System.out.println("MachineAction." + m_a + ": name=" + m_a.sName + ", ip=" + m_a.sIP + "");
  }
}

enum MachineAction  {
   ONE("Name1", "192.1.1.1"),
   TWO("Name2", "292.2.2.2"),
   THREE("Name3", "392.3.3.3"),
   FOUR("Name4", "492.4.4.4"),
   FIVE("Name5", "592.5.5.5");

   public final String sName;
   public final String sIP;

   private MachineAction(String s_name, String s_ip)  {
      sName = s_name;
      sIP = s_ip;
   }
}

输出:

代码语言:javascript
复制
[C:\java_code\]java EnumDeltaXmpl
MachineAction.ONE: name=Name1, ip=192.1.1.1
MachineAction.TWO: name=Name2, ip=292.2.2.2
MachineAction.THREE: name=Name3, ip=392.3.3.3
MachineAction.FOUR: name=Name4, ip=492.4.4.4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21972141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档