不确定我在这里做错了什么。但我想将卡更改为正确的格式。
例如,鉴于卡1c将其更改为AC。
以下是我一直在玩的一些代码:
public static void main(String[] args) {
String[] cards = {"1c", "13s"};
for (String card : cards) {
switch (card.toUpperCase()) {
case "1C":
card = card.toUpperCase().replace("1C", "AC");
break;
case "13S":
card = card.toUpperCase().replace("13S", "KS");
break;
default:
System.out.println(Arrays.toString(cards));
}
}
System.out.println(Arrays.toString(cards));
}
任何帮助都会很棒。
答案 0 :(得分:6)
在循环中,card
只是一个局部变量,重新分配它不会修改数组cards
。立即修复将索引数组,以便您可以直接引用每个元素:
for (int i = 0; i < cards.length; i++) {
switch (cards[i].toUpperCase()) {
case "1C":
cards[i] = cards[i].toUpperCase().replace("1C", "AC");
break;
case "13S":
cards[i] = cards[i].toUpperCase().replace("13S", "KS");
break;
default:
System.out.println(Arrays.toString(cards));
}
}
编辑以回答编辑的评论,需要在循环外部保留一个计数器变量,以便继续使用enhanced-for语法:
int i = 0;
for (String card : cards) {
switch (card.toUpperCase()) {
case "1C":
cards[i] = card.toUpperCase().replace("1C", "AC");
break;
case "13S":
cards[i] = card.toUpperCase().replace("13S", "KS");
break;
default:
System.out.println(Arrays.toString(cards));
}
i++;
}
答案 1 :(得分:0)
您使用的是Java 7吗?如果不是,则无法在String
s中使用case
。
See this problem和here(向下滚动到切换语句中使用字符串)
答案 2 :(得分:0)
您可以通过以下代码
执行此操作public static void main(String[] args) {
String[] cards = {"1c", "13s"};
for (int i = 0 ; i < cards.length ; i++) {
switch (card[i].toUpperCase()) {
case "1C":
cards[i] = cards[i].toUpperCase().replace("1C", "AC");
break;
case "13S":
cards[i] = cards[i].toUpperCase().replace("13S", "KS");
break;
default:
System.out.println(Arrays.toString(cards));
}
}
System.out.println(Arrays.toString(cards));
}
答案 3 :(得分:0)
除了@Paul Borella的答案之外,我会说只有Java 7才能实现这一点。由于Switch语句不允许String作为表达式。所以你应该在第
行得到编译错误switch(card.toUpperCase())
如果你想获得相同的功能,那么你可以选择Enum。
public enum Cards {
1C, 13S;
public String replacedString(){
case 1C : return "AC";
break;
case 13S : return "KS";
break;
default : return "";
}
}