簡體   English   中英

HackerRank掃描器類Java

[英]HackerRank Scanner Class Java

此代碼用於打印鏈表,並且在Eclipse中可以正常工作:-

import java.util.Scanner;

public class HackerAss {
    static Scanner scan;
    static Node head;
    static Node current;
    public static void main(String[] args) {
        int q=1,count=0;
        while(q==1){
            scan = new Scanner(System.in);
            q = scan.nextInt();
            if(q==0)
                break;
            else{
                int element = scan.nextInt();
                if(count == 0)
                    current = new Node(element);
                else{
                    head = new Node(element);
                    head.node = current;
                    current = new Node(element);
                }
            }

            count++;
            }
        while(head!=null){
            System.out.println(head.data);
            head=head.node;
        }

        }


    static class Node{
        int data;
        Node node;
        public Node() {
            data=0;
            node=null;
        }
        public Node(int data) {
            this.data=data;
            node=null;
        }

    }}

但是在HackerRank中,它顯示錯誤:-

線程“主”中的異常java.util.NoSuchElementException

錯誤的原因是什么,解決方案是什么。 我有作業要提交。

您的問題來自您的代碼,而不是您的IDE。

首先,您應該定義一次掃描器:

while(q==1){
    scan = new Scanner(System.in);
    q = scan.nextInt();  
    ...  
}

這是一個非常糟糕的主意,因為您甚至都不知道流中是否有內容,因此您必須使用Scanner這樣的操作:

scan = new Scanner(System.in);
while(scan.hasNextInt()){
    q = scan.nextInt();
    ...
}

之后, java.util.NoSuchElementException來自於您兩次調用nextInt()的事實:

scan = new Scanner(System.in);
q = scan.nextInt();
...
int element = scan.nextInt();

輸入耗盡后,在文檔nextInt()拋出java.util.NoSuchElementExceptionhttps : //docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28%29

該錯誤來自nextInt()。 您必須通過以下代碼中的條件來避免這種情況

import java.util.Scanner;

public class HackerAss {
    static Scanner scan;
    static Node head;
    static Node current;
    public static void main(String[] args) {
        int q=1,count=0;
        scan = new Scanner(System.in);
        while(q==1){

            if(scan.hasNextInt() ) {
              q = scan.nextInt();
            }
            if(q==0)
                break;
            else{
                if(scan.hasNextInt() ) {
                  int element = scan.nextInt();
                }
                if(count == 0)
                    current = new Node(element);
                else{
                    head = new Node(element);
                    head.node = current;
                    current = new Node(element);
                }
            }

            count++;
            }
        while(head!=null){
            System.out.println(head.data);
            head=head.node;
        }

        }


    static class Node{
        int data;
        Node node;
        public Node() {
            data=0;
            node=null;
        }
        public Node(int data) {
            this.data=data;
            node=null;
        }

    }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM