Java 代码在IntelliJ IDEA中工作,但在不支持';我们没有提供输入的交互式控制台
因此,我一直在尝试编写一个代码来查找n字符串中的常见字符。 该代码在IntelliJ IDEA和onlinegdb(具有交互式控制台)上运行良好,但在其他编译器上不起作用,并导致以下错误:Java 代码在IntelliJ IDEA中工作,但在不支持';我们没有提供输入的交互式控制台,java,compiler-errors,nullpointerexception,online-compilation,Java,Compiler Errors,Nullpointerexception,Online Compilation,因此,我一直在尝试编写一个代码来查找n字符串中的常见字符。 该代码在IntelliJ IDEA和onlinegdb(具有交互式控制台)上运行良好,但在其他编译器上不起作用,并导致以下错误: >Exception in thread "main" java.lang.NullPointerException at Main.commonCharacters(Main.java:18) at Main.main(GFG.java:47) 如果不是作业,那就
>Exception in thread "main" java.lang.NullPointerException
at Main.commonCharacters(Main.java:18)
at Main.main(GFG.java:47)
如果不是作业,那就好了,但是我们必须提交代码的网站没有交互式控制台,它给我运行时错误
非常感谢您的帮助
import java.io.*;
import java.util.*;
import java.lang.*;
public class GFG {
static int MAX_CHART = 26;
public static void commonCharacters(String str[], int n)
{
Boolean[] prim = new Boolean[MAX_CHART];
Arrays.fill(prim, new Boolean(true));
for (int i = 0; i < n; i++) {
Boolean[] sec = new Boolean[MAX_CHART];
Arrays.fill(sec, Boolean.FALSE);
for (int j = 0; j < str[i].length(); j++)
{
if (prim[str[i].charAt(j) - 'A'])// the compiler says the **problem** is here
sec[str[i].charAt(j) - 'A'] = true;
}
System.arraycopy(sec, 0, prim, 0, MAX_CHART);
}
for (int i = 0; i < 26; i++)
if (prim[i]){
System.out.print(Character.toChars(i + 65));
}
}
public static void main(String[] args)
throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Scanner input = new Scanner(System.in);
int n = input.nextInt();// number of strings
String[] str = new String[n];
for (int i=0;i < n;i++){
str[i]=reader.readLine();//getting strings as input
}
n = str.length;
commonCharacters(str, n);
}
}
import java.io.*;
导入java.util.*;
导入java.lang.*;
公共类GFG{
静态整数最大值图表=26;
公共静态void commonCharacters(字符串str[],int n)
{
Boolean[]prim=新的Boolean[MAX_图表];
fill(prim,new Boolean(true));
对于(int i=0;i
为什么要混合使用扫描仪和BufferedReader从控制台读取数据?您是否检查过在启动程序之前不应该向这些编译器提供输入?问题是,当我想使用“for”循环和扫描仪获取n个输入时,它不允许我获取最后一个输入。例如,如果我输入3,然后写入ABC、BDS,程序将完成,并且不允许我提供最后一个输入,正是因为这个奇怪的问题,我不得不使用BufferedReader,因为我在开始之前提供了输入,因为如果你不这样做,它会给你一个新的错误。如果你事先提供了输入,那么一切都应该是好的。关于scanner,这个问题其实并不奇怪,关于堆栈溢出还有很多问题,谢谢,实际上我通过删除BufferedReader部分并使用“Input.next()”解决了这个问题。