开关盒不打印到控制台?
Switch case doesn't print to the console?
public static void startGame(){
//int stone = 0, diamond = 0, iron = 0, gold = 0;
StringBuffer blockys = new StringBuffer("\uD83E\uDDCD ▯▯▯▯▯▯▯▯▯");
Scanner input = new Scanner(System.in);
System.out.println("\uD83E\uDDCD " + "▯▯▯▯▯▯▯▯▯" + "\n");
String user = input.next();
boolean game = true;
while(game) {
switch (user) {
//Code
case "M":
System.out.println(mine(blockys));
user = input.next();
break;
}
}
public static StringBuffer mine(StringBuffer blockys){
addOre(blockys);
blockys.delete(2, 3);
int randBlock = (int) (Math.random() * 101) + 0;
//Code
else{
//add bomb 5% chance
blockys.append("\uD83E\uDDE8");
}
return blockys;
}
public static void addOre(StringBuffer blockys){
String str = blockys.substring(2, 3);
switch(str){
//Code
case "\uD83E\uDDE8":
System.out.println("You mined a bomb! BOOOOOOOM! You died!");
System.exit(0);
break;
}
}
在我的方法 addOre 中,当它到达案例“\uD83E\uDDE8”时,它不会打印到控制台,也不会终止程序。当它到达案例时,它完全忽略它并且程序继续。我曾尝试将其设置为失败的默认值,并在案例中尝试了不同的变量,但它从不打印任何内容。我怎样才能修复它以便它打印并在之后终止?
这是一个 'length' 问题。
考虑以下代码:
public static void main(String[] args) {
System.out.println("Hello".substring(2, 3).length());
System.out.println("\uD83E\uDDE8".length());
}
将输出:
1
2
那么问题是什么?
当你是一个子字符串时,你将始终返回一个长度为 1 的字符串。
而在另一端,在您的开关盒中,您正在尝试测试长度为 2 的字符串。
1 != 2: 从未满足条件
public static void startGame(){
//int stone = 0, diamond = 0, iron = 0, gold = 0;
StringBuffer blockys = new StringBuffer("\uD83E\uDDCD ▯▯▯▯▯▯▯▯▯");
Scanner input = new Scanner(System.in);
System.out.println("\uD83E\uDDCD " + "▯▯▯▯▯▯▯▯▯" + "\n");
String user = input.next();
boolean game = true;
while(game) {
switch (user) {
//Code
case "M":
System.out.println(mine(blockys));
user = input.next();
break;
}
}
public static StringBuffer mine(StringBuffer blockys){
addOre(blockys);
blockys.delete(2, 3);
int randBlock = (int) (Math.random() * 101) + 0;
//Code
else{
//add bomb 5% chance
blockys.append("\uD83E\uDDE8");
}
return blockys;
}
public static void addOre(StringBuffer blockys){
String str = blockys.substring(2, 3);
switch(str){
//Code
case "\uD83E\uDDE8":
System.out.println("You mined a bomb! BOOOOOOOM! You died!");
System.exit(0);
break;
}
}
在我的方法 addOre 中,当它到达案例“\uD83E\uDDE8”时,它不会打印到控制台,也不会终止程序。当它到达案例时,它完全忽略它并且程序继续。我曾尝试将其设置为失败的默认值,并在案例中尝试了不同的变量,但它从不打印任何内容。我怎样才能修复它以便它打印并在之后终止?
这是一个 'length' 问题。
考虑以下代码:
public static void main(String[] args) {
System.out.println("Hello".substring(2, 3).length());
System.out.println("\uD83E\uDDE8".length());
}
将输出:
1
2
那么问题是什么?
当你是一个子字符串时,你将始终返回一个长度为 1 的字符串。
而在另一端,在您的开关盒中,您正在尝试测试长度为 2 的字符串。
1 != 2: 从未满足条件