Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复switch语句“Constant expression required”两个字符串_Java_Android - Fatal编程技术网

Java 如何修复switch语句“Constant expression required”两个字符串

Java 如何修复switch语句“Constant expression required”两个字符串,java,android,Java,Android,所以我试着做一个计数器,我用了一个switch语句 下面是我正在尝试的代码: private View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View view) { switch (PIP1) { case PI1: Counter++

所以我试着做一个计数器,我用了一个switch语句

下面是我正在尝试的代码:

 private View.OnClickListener clickListener = new View.OnClickListener() {
      @Override
      public void onClick(View view) {
          switch (PIP1) {
              case PI1:
                  Counter++
                  break;
          }
      }
  };
其内部有一个按钮: 我得到一个错误常量表达式需要在案例PI1。 我从另一个活动中获取PIP1和PI1:

  PIP1 = getIntent().getStringExtra("PlayerText");
  PI1 = getIntent().getStringExtra("Player1Text");

我尝试@jpact所说的,而不是像那样删除它们

 String PIP1;
 String PI1;
你只要这样做:

 public static final String PIP1 = "PlayerText";
 public static final String PI1 = "Player1Text"; 
Player1Text和PlayerText是关键


再次感谢@jpact

请展示您是如何申报PI1的。我没有要求您描述它,我要求您展示它。对于什么允许变量被视为常量有严格的要求,因此细节很重要。它需要是编译时常量。字符串被散列,然后编译器将构造一个整数开关,转换散列代码,并在每种情况下额外检查字符串是否匹配。我猜他想看看如何声明define PIP1变量。例如:公共静态最终字符串PIP1=PIP1值;不能将非常量的值在编译时已知的东西放入开关。这就是错误的意思。Andy的意思是,你应该编辑你的问题,并在声明PIP的地方发布代码,而不是模糊地描述代码。在回答有关代码的问题时,查看代码会有很大帮助。根据描述猜测也没有多大帮助。如果PIP1和PI1都是常量,那么开关中就没有意义了。