我试图使用split函数将String拆分为String数组,但收到错误:
Exception in thread "main" java.lang.NullPointerException
at wdtbam.main(Main.java:16)
我在Codechef解决了这个问题。 我的目标是在遇到空格的地方将String拆分为数组的索引,然后将其解析为Long类型。
这是我的代码
import java.util.*;
import java.io.*;
class wdtbam
{
public static void main(String args[]) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(br);
int t =sc.nextInt();
for(int i=1;i<=t;i++)
{
int n =sc.nextInt();
String a =br.readLine();
String b =br.readLine();
String c = br.readLine();
String cx[]= c.split(" "); //the problem
long d []=new long[1234];
int y=0;
for(int j=0;j<=n;j++)
{
d[j]=Long.parseLong(cx[j]);
}
for(int k=0;k<n;k++)
{
if(a.charAt(k)==b.charAt(k))
{
y++;
}
}
System.out.println(d[y]);
}
}
}
我一直在遇到这个问题,如果有人可以帮助我,那将是非常适合的。
编辑:
我从代码中删除了BufferedReader,而只使用了Scanner。 我还尝试直接将数字输入到数组中,而不是输入字符串,然后将其解析为长数组。
这是我的新代码:
import java.util.*;
import java.io.*;
class wdtbam
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int t =sc.nextInt();
for(int i=1;i<=t;i++)
{
int n =sc.nextInt();
String a =sc.nextLine();
String b =sc.nextLine();
long d []=new long[1234];
int y=0;
for(int j=0;j<=n;j++)
{
d[j]=sc.nextInt();
}
for(int k=0;k<n;k++)
{
if(a.charAt(k)==b.charAt(k))
{
y++;
}
}
System.out.println(d[y]);
}
}
}
我仍然收到错误。 IDK为什么。 请帮助我现在对JAVA感到非常沮丧。
错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at wdtbam.main(Main.java:18)
顺便说一句,这是我试图解决的问题:Codechef