Java 如何修复switch语句“Constant expression required”两个字符串
所以我试着做一个计数器,我用了一个switch语句 下面是我正在尝试的代码: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++
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都是常量,那么开关中就没有意义了。