如何在Java8中获取编码竞赛的输入?

如何在Java8中获取编码竞赛的输入?,java,java-8,Java,Java 8,我一直在练习竞争性的编码,让我大吃一惊的是,尽管我的代码在本地IDE(如Eclipse、BlueJ或Netbeans)中运行得非常好,但有些代码却出现了运行时错误。 我使用Scanner类或BufferedReader类和StringTokenizer从一行中获取多个输入。但是,运行时错误占了上风。 实际上,在竞争编码中,我认为我的代码所接受的输入是空的,而不是值。这就是Integer.parseInt(br.readLine())引发格式异常的原因 我想知道如何在java8中获取输入:单行多输

我一直在练习竞争性的编码,让我大吃一惊的是,尽管我的代码在本地IDE(如Eclipse、BlueJ或Netbeans)中运行得非常好,但有些代码却出现了运行时错误。 我使用Scanner类或BufferedReader类和StringTokenizer从一行中获取多个输入。但是,运行时错误占了上风。 实际上,在竞争编码中,我认为我的代码所接受的输入是空的,而不是值。这就是Integer.parseInt(br.readLine())引发格式异常的原因

我想知道如何在java8中获取输入:单行多输入和单行一输入

下面我分享的代码在本地IDE上运行良好,但在Google Kick start IDE中抛出运行时错误:

/*recordbreaking problem of kickstart group D*/
    import java.util.*;
    import java.io.*;
    class RecordBreaking
    {
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    }
    public static void main(String args[])
    {
    FastReader s=new FastReader();
    int t=s.nextInt();
    int tans[] = new int[t];
    int n,c,sum=0;
    int v[] = new int[10000];
    for(int i=0;i<t;i++)
    {
        c=0;
        n=s.nextInt();
        for(int j=0;j<n;j++)
        {
            v[i]=s.nextInt();
        }
        for(int m=0;m<n;m++)
        {
            for(int q=0;q<m;q++)
                sum=sum+v[q];
            if((m==(n-1)||m==0)||(v[m+1]<v[m])&&(sum<v[m]))
                c++;
            sum=0;    
        }
        System.out.println(c);
    }
    
    
    }
}
它抛出运行时错误!救命啊
谷歌的kickstart中没有关于问题所在的信息

对于联机IDE:将显示以下错误消息:

Exception in thread "main" java.lang.NullPointerException
    at java.util.StringTokenizer.<init>(StringTokenizer.java:199)
    at java.util.StringTokenizer.<init>(StringTokenizer.java:236)
    at RecordBreaking$FastReader.next(RecordBreaking.java:23)
    at RecordBreaking$FastReader.nextInt(RecordBreaking.java:35)
    at RecordBreaking.main(RecordBreaking.java:65)
线程“main”java.lang.NullPointerException中的异常 位于java.util.StringTokenizer。(StringTokenizer.java:199) 位于java.util.StringTokenizer。(StringTokenizer.java:236) 在RecordBreaking$FastReader.next(RecordBreaking.java:23) 在RecordBreaking$FastReader.nextInt(RecordBreaking.java:35) 在RecordBreaking.main(RecordBreaking.java:65)
我不能说我百分之百肯定这个问题,但我会分享我通常做的事情。标准的扫描仪应该可以正常工作,也许在这种情况下还有另一个问题,但我不相信从这些信息可以得出结论

Scanner scanner = new Scanner(System.in);
int t= scanner.nextInt();
for (int i = 0; i < t; i++) {
    int n = scanner.nextInt();
    int[] numbers = new int[n];
    for (int j = 0; j < n; j++) {
        numbers[j] = scanner.nextInt();
    }
}
Scanner Scanner=新的扫描仪(System.in);
int t=scanner.nextInt();
for(int i=0;i

这对我来说总是有效的,但我也不能确定。很抱歉,无法提供更多帮助,但我不确定是否还有其他人可以提供帮助。

您的代码的问题是您的类名。在Google KickStart上,使用类名作为公共类解决方案。我还运行了你的代码并给出了WA,所以这是我的代码

import java.util.*;
public class Solution {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for(int loop=1; loop<=T; loop++){
           int N = sc.nextInt();
           int arr[] = new int[N+7];
            for(int i=0; i<N; i++){
                arr[i] = sc.nextInt();
            }
            int max = -1;
            int ans = 0;
            for(int i=0; i<N-1; i++){
                //if(arr[i]>max) max = arr[i];
                if(arr[i]>max ) {
                    if(arr[i]>arr[i+1])ans++;
                    max =arr[i];
                }
            }
            if(arr[N-1]>max) ans++;
            System.out.println("Case #" + loop+": "+ans);
        }
    }
}
import java.util.*;
公共类解决方案{
公共静态void main(字符串参数[]){
扫描仪sc=新的扫描仪(System.in);
int T=sc.nextInt();
对于(int-loop=1;looparr[i+1])ans++;
max=arr[i];
}
}
如果(arr[N-1]>max)ans++;
System.out.println(“Case#“+loop+”:“+ans”);
}
}
}

希望对你有帮助!!如果发现正确,请进行投票并接受。

发布您收到的完整错误消息,包括完整的堆栈跟踪。另外,如果他们使输入可用,也发布(示例)输入。欢迎使用堆栈溢出!请阅读“如何创建一个应用程序”。然后使用链接改进您的问题(不要通过评论添加更多信息)。否则我们无法回答您的问题并帮助您。我提到了问题陈述、输入格式以及示例输入和输出。请检查!请添加错误消息和stacktrace。这将使我们更容易帮助您。
readLine()
点击文件末尾时将返回
null
。如果您手动输入值,此代码段将正常工作。我试着用扫描器运行,但仍然在谷歌IDE中盛行。我明白了,很抱歉,我帮不上忙。它去年在Hashcode中起作用,在HackerRank示例中也起作用,但可能从那个以后他们做了一些更改。我感谢你在这方面的帮助。非常感谢。
import java.util.*;
public class Solution {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for(int loop=1; loop<=T; loop++){
           int N = sc.nextInt();
           int arr[] = new int[N+7];
            for(int i=0; i<N; i++){
                arr[i] = sc.nextInt();
            }
            int max = -1;
            int ans = 0;
            for(int i=0; i<N-1; i++){
                //if(arr[i]>max) max = arr[i];
                if(arr[i]>max ) {
                    if(arr[i]>arr[i+1])ans++;
                    max =arr[i];
                }
            }
            if(arr[N-1]>max) ans++;
            System.out.println("Case #" + loop+": "+ans);
        }
    }
}