Java 我将扫描器int转换为char,为什么这会给我一个不匹配的异常?
我创建了一个新的扫描仪,我创建了我的字符变量,然后我在中读取了我的字符变量,它给出了一个不匹配的错误???一个Java 我将扫描器int转换为char,为什么这会给我一个不匹配的异常?,java,eclipse,java.util.scanner,type-mismatch,Java,Eclipse,Java.util.scanner,Type Mismatch,我创建了一个新的扫描仪,我创建了我的字符变量,然后我在中读取了我的字符变量,它给出了一个不匹配的错误???一个整数不是字符 尝试使用next,然后只使用字符串的第一个字符 使用String.charAt(int) 尝试使用此选项获取字符 public class Practice { public static void main(String []args){ Scanner ScanMe=new Scanner(System.in); char ch,answer='K'; System.o
整数
不是字符
尝试使用next
,然后只使用字符串的第一个字符
使用String.charAt(int)代码>
尝试使用此选项获取字符
public class Practice {
public static void main(String []args){
Scanner ScanMe=new Scanner(System.in);
char ch,answer='K';
System.out.println("I am thinking of a letter between A and Z.");
ch=(char)ScanMe.nextInt();
System.out.println(ch);
if(answer==ch){
System.out.println("CORRECT");
}
}
}
另外,K和K不一样。马特的解决方案是正确的,但我想补充一点说明ch=(char)ScanMe.nextInt()
引发异常,因为首先计算的是ScanMe.nextInt()
。假设您输入了一个字母,nextInt将抛出一个异常,因为字母不是十进制整数(nextInt
所期望的)
但是,如果您输入一个十进制整数,则一切正常。例如,如果您输入75,这个方法调用将起作用,当您将75转换为一个字符时,它实际上是“K”,因此您最初编写的程序将显示“CORRECT”
如果转换不合理,请检查ASCII表。可能重复:您的输入是什么?但我将其转换为图表。正如我所说,您也不能从字符串转换为字符,字符串的第一个字母与字符值不同使用
charAt
如何将12345转换为字符?哥们,回答得很好,我会在允许的情况下给你支票,还有为什么你要在.charAt中加零,这意味着什么charAt(0)确保它只需要你输入的第一个特许证,所以如果你输入ABSCDSFFHFGJ,它只需要我得到的aOh,所以基本上,一旦nextInt意识到我在其中放入了任何东西,那么int就会自动抛出一个异常,而不会被转换为char?基本上就是这样。一旦抛出异常,就不再执行代码(除非捕获到异常,如果有的话)。
ch = ScanMe.next().charAt(0);