我是Java的新手,我在这里感到困惑。当我想在java中将字符串转换为int时,为什么会出现错误?
如果我输入msi(a到e),我想在if语句中使用msii变量到外面,我不能,所以我尝试在外面使用sout
。但是我得到了一个错误。
public static void main(String args[]){
Scanner i=new Scanner (System.in);
System.out.println("Name\t\t\t");
String nama=i.nextLine();
System.out.println("Nim\t\t\t");
String nim=i.nextLine();
System.out.println("grade\t\t");
String msi=i.next();
switch(msi) {
case "a||A":
{
msii=Integer.parseInt(msi);
msii=4;
break;
}
case "b||B":
{
msii=Integer.parseInt(msi);
msii=3;
break;
}
case "c||C":
{
msii=Integer.parseInt(msi);
msii=2;
break;
}
case "d||D":
{
msii=Integer.parseInt(msi);
msii=1;
break;
}
case "e||E":
{
msii=Integer.parseInt(msi);
msii=4;
break;
}
default:
System.out.println("tidak ada");
break;
}
System.out.println(+msii);
答案 0 :(得分:0)
您没有为msii
声明数据类型
必须全局声明为int msii
或int msii=Integer.parseInt(msi);
答案 1 :(得分:0)
由于您未包含任何Exception
的堆栈跟踪,我将假设您获得NumberFormatException
来自oracle:
public static int parseInt(String s) 抛出NumberFormatException 将字符串参数解析为带符号的十进制整数。 字符串中的字符必须全部为十进制数字,但第一个字符可能是ASCII减号' - ' (' \ u002D')表示负值或ASCII加号' +' (' \ u002B')表示正值。返回结果整数值,就像将参数和基数10作为parseInt(java.lang.String,int)方法的参数给出一样。 参数: s - 包含要解析的int表示的String 返回: 十进制参数表示的整数值。 抛出: NumberFormatException - 如果字符串不包含可解析的整数。
请注意,我标记了
行字符串中的字符必须全部为十进制数字
至少应该回答为什么会出错。
您正在尝试解析非十进制字符
除非您提供有关您正在尝试做的更准确的描述,否则我们无法为您提供更多帮助。