我正在制作我的程序,为JavaSE的学校作业扔一个骰子(如骰子)。用户可以将一个字符作为标准输入,因此用户选择的字符将代表骰子的眼睛。有时当我打印结果时,它会显示一个完全不同的字符。
package ThrowADie;
import java.util.Scanner;
public class ThrowADie {
public static void main(String[] args) {
//Ask user for the char in which the dices eyes should be printed in.
System.out.print("Which character should I use for the eye: ");
//Allow user to place input in the eye variable
Scanner input = new Scanner(System.in); //Make the stdinput object
char eye = input.next().charAt(0);
//Time to throw the die. Place result in dieResult
int dieResult = throwDie();
//Reveal of the result
printDieResult(dieResult, eye);
}
/*
* Method name: throwDie()
* Purpose: Picks a number from 1 to 6 randomly, like a die does
* Parameters: N/A
* Returns: Integer number from 1 to 6
*/
public static int throwDie(){
int range = (6 - 1) + 1;
return (int)(Math.random() * range) + 1;
}
/*
* Method name: printDieResult()
* Purpose: Generate result of the die throw in ASCII art
* Parameters: numberOfEyes, typeOfEyes
* Returns: N/A
*/
public static void printDieResult(int numberOfEyes, char typeOfEyes){
if (numberOfEyes == 1){
//Print art
System.out.println(
" " + " " + " \n"
+ " " + typeOfEyes + " \n"
+ " " + " " + " ");
} else if (numberOfEyes == 2){
//Print art
System.out.println(
typeOfEyes + " " + " \n"
+ " " + " " + " \n"
+ " " + " " + typeOfEyes);
} else if (numberOfEyes == 3){
//Print art
System.out.println(
typeOfEyes + " " + " \n"
+ " " + typeOfEyes + " \n"
+ " " + " " + typeOfEyes);
} else if (numberOfEyes == 4){
//Print art
System.out.println(
typeOfEyes + " " + typeOfEyes + "\n"
+ " " + " " + " \n"
+ typeOfEyes + " " + typeOfEyes);
} else if (numberOfEyes == 5){
//Print art
System.out.println(
typeOfEyes + " " + typeOfEyes + "\n"
+ " " + typeOfEyes + " \n"
+ typeOfEyes + " " + typeOfEyes);
} else {
//Print art
//Accidentally written down 9 eye representation
System.out.println(
typeOfEyes + typeOfEyes + typeOfEyes + "\n"
+ typeOfEyes + typeOfEyes + typeOfEyes + "\n"
+ typeOfEyes + typeOfEyes + typeOfEyes);
}
}
}
输出此程序将生成正确的结果。但偶尔输入的字符(代表模具的眼睛)会转换为数字。
在以下情况下,程序应打印9个“@”字符。相反,它在第一行打印192。(我知道骰子有6只眼睛,但我在无意中打印了9只眼睛时遇到了这个奇怪的输出)
run:
Which character should I use for the eyes: @
192
@@@
@@@
我找不到原因,有人能看出我做错了什么吗?
int test = (int) (typeOfEyes + typeOfEyes + typeOfEyes);
System.out.println("\n" + test + "\n"
+ typeOfEyes + "" + typeOfEyes + "" + typeOfEyes + "\n"
+ typeOfEyes + "" + typeOfEyes + "" + typeOfEyes + "\n"
+ typeOfEyes + "" + typeOfEyes + "" + typeOfEyes);
Which character should I use for the eye: @
192
@@@
@@@
@@@
字符算术!
请参阅此表<代码>@是字符<代码>64
typeofees-typeofees-typeofees“\n”
第一行实际上是将字符(64 64 64) = 192的值相加,然后用换行符将其相加,因此我们得到
192\n
。
编译器选择将它们相加而不是创建字符串。解决这个问题的简单方法是在前面加上一个空字符串:
"typeOfEyes...
基本上,编译器是“愚蠢的”。当我们将整数添加到String时,
"foo"123
编译器可以将其解释为fo123
很好,因为它将第一个元素识别为String。但是,我们定义了一个char
,它是表示字符的数字类型。所以编译器会对其进行数学运算。即使我们不应该这样做。添加字符串文字告诉它我们实际上需要文本。
问题内容: 当我执行以下代码时,输出为“ nullHelloWorld”。Java如何处理null? 问题答案: 您正在尝试将值连接到。这由“字符串转换”控制,当一个操作数是a时发生,该转换被JLS的5.1.11节覆盖: 现在只需要考虑参考值: 如果引用为null,则将其转换为字符串“ null”(四个ASCII字符n,u,l,l)。
以下代码在C 14中被认为是非法的,但在C 17中是合法的: 不要费心测试它,你会得到不一致的结果,很难确定这是一个错误还是故意的行为。但是,比较两个草案(N4140 vs N4527,都可以在github.com/cplusplus/draft上找到),[func.wrap.func.inv]有一个显著的区别。第2段: 返回:如果R为空,则无,否则返回值INVOKE(f, std::forwar
我不明白为什么< code>gcc -S -m32会产生这些特定的代码行: C 代码: 它给出以下输出:
Python中的字符串是不可变的,这意味着该值不能更改。我正在测试该场景,但看起来原始字符串已被修改。我只是想理解这个概念
问题内容: 应用Webkit过滤器时,我发现堆叠顺序出现了一个奇怪的问题。为什么当我将鼠标悬停在图像上时,堆叠顺序会改变吗? 我宁愿不必使用z-indexing来解决此问题,因为它会破坏其他站点元素。 请原谅荷马,我只需要一张图片。 编辑:如何才能反转效果以阻止隐藏绝对位置div? 这是我的HTML CSS 问题答案: 这是因为除了建立堆栈上下文以外的其他值。 规范中 对此进行了记录(当前处于工作
我是java初学者,我对上述程序的输出感到困惑。请给我解释一下输出的原因。