【问题标题】:Why am I getting exception in thread 'main' in my java program [closed]为什么我的java程序中的线程'main'出现异常[关闭]
【发布时间】:2021-07-13 07:31:57
【问题描述】:

我可以在 ubuntu 中执行以下代码,但不能在hackerrank 平台上执行。我的输出是正确的,但是由于运行时错误,我无法继续前进:

线程“主”java.util.NoSuchElementException 中的异常

import java.util.Scanner;
import java.io.*;

class Solution
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int t=in.nextInt();
        int s=0;
        for(int i=0;i<=t;i++)
        {
            int a = in.nextInt();
            int b = in.nextInt();
            int n = in.nextInt();
            s=a;
            
            for(int j=0;j<n;j++)
            {
                s+= b * Math.pow(2,j);
                System.out.print(s+" ");
            }
            System.out.println();
        }
        
        in.close();
    }
}

【问题讨论】:

  • 共享输入和预期输出会有所帮助

标签: java error-handling runtime-error java.util.scanner


【解决方案1】:

没有下一个元素时会抛出java.util.NoSuchElementException,为避免这种情况,您应该使用hasNextInt()进行检查。

试试这个:

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    
    int t= 0;
    
    if(in.hasNextInt())
        t=in.nextInt();
    
    int s=0;
    for(int i=0;i<=t;i++)
    {   
        int a = 0;
        int b = 0;
        int n = 0;
        
        if(in.hasNextInt())
            in.nextInt();
            
        if(in.hasNextInt())
            b = in.nextInt();
            
        if(in.hasNextInt())
            n = in.nextInt();
        s=a;
        
        for(int j=0;j<n;j++)
        {
            s+= b * Math.pow(2,j);
            System.out.print(s+" ");
        }
        System.out.println();
    }
    
    in.close();
}

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多