java.util.NoSuchElementException
Exceptioninthread"main"java.lang.NullPointerExceptionatMain.main(Main.java:18)源代码如下im...
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:18)
源代码如下
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
int n = new Scanner(System.in).nextInt();
Scanner scan = new Scanner(System.in);
String[] s = new String[n];
for(int i = 0; i < n; i ++)
{
if(scan.hasNext())
{
s[i] = scan.next();
}
switch(s[i].charAt(s[i].length() - 2))
{
case 'M':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8388608 + "bit";
break;
case 'K':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8192 + "bit";
break;
case 'i':
break;
default:
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 1)) * 8 + "bit";
break;
}
}
for(String x : s)
{
System.out.println(x);
}
}
}
报错为18行,switch(s[i].charAt(s[i].length() - 2))
怎么找也没找出原因 展开
at Main.main(Main.java:18)
源代码如下
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
int n = new Scanner(System.in).nextInt();
Scanner scan = new Scanner(System.in);
String[] s = new String[n];
for(int i = 0; i < n; i ++)
{
if(scan.hasNext())
{
s[i] = scan.next();
}
switch(s[i].charAt(s[i].length() - 2))
{
case 'M':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8388608 + "bit";
break;
case 'K':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8192 + "bit";
break;
case 'i':
break;
default:
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 1)) * 8 + "bit";
break;
}
}
for(String x : s)
{
System.out.println(x);
}
}
}
报错为18行,switch(s[i].charAt(s[i].length() - 2))
怎么找也没找出原因 展开
1个回答
展开全部
你在控制台输入的是几报错?说一下我看看
追问
我能运行出来,控制台输入几都没报错,但是一放到一个网站上提交就会报这个错
追答
switch(s[i].charAt(s[i].length() - 2))
{
case 'M':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8388608 + "bit";
break;
case 'K':
s[i] = Integer.parseInt(s[i].substring(0 , s[i].length() - 2)) * 8192 + "bit";
break;
//这一块,将-2修改成-1,总之我测试时报了要么越界要么空指针
为什么要修改?
如我添加的是一个数字,length()是计算总长,那么则是=1(长度),那么1-2=-1,数组中找不到异常不会再执行switch中的最后一个,也就是说如果你输入一个参数将会异常。况且,你代码的意思是,如我输入“1M”,那么需要按照用户给的字符串最后一个字母判断并计算该字符串,除字符串最后一个字符外的字节个数,如果-2那么switch判断的不是M而是上述的1那么将会是永远执行不到上述代码的case!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询