簡體   English   中英

讀取Java輸入的最佳方法是什么,特別是對於連續的字符串? 我不知道何時使用next()和nextLine()

[英]What's the best way to read input in Java, especially for consecutive strings? I don't know when to use next() and nextLine()

我在一個非常簡單的代碼中收到此錯誤,但無法弄清楚。

另外,在這種情況下,請建議什么是讀取兩個連續字符串的最佳方法。 我遇到InputMismatchException,我認為這可能是原因。

奇怪的是,代碼也無法接受整數。 讀取整數時出現異常。

我不確定何時使用Scanner.next()和Scanner.nextLine()。

import java.util.Scanner;

class Customer
{
    private int id;
    private String name;
    private String city;
    private double salary;

    Customer(){}

    Customer(int id, String name, String city, double salary)
    {
        this.id=id;
        this.name=name;
        this.city=city;
        this.salary=salary;
    }

    public int getId(){
        return id;
    }

    public String getName(){
        return name;
    }

    public String getCity(){
        return city;
    }

    public double getSalary(){
        return salary;
    }

    public void setId(int id){
        this.id=id;
    }

    public void setName(String name){
        this.name=name;
    }

    public void setCity(String city){
        this.city=city;
    }

    public void setSalary(double salary){
        this.salary=salary;
    }
}

public class Solution{

     public static void main(String []args){

        Scanner in = new Scanner(System.in);

        Customer c = new Customer();

        int id = in.nextInt();
        String name = in.next();
        String city = in.next();
        double sal = in.nextDouble();

        c.setId(id);
        c.setName(name);
        c.setCity(city);
        c.setSalary(sal);

        System.out.println(c.getId() + " " + c.getName() + " " + c.getCity() + " " + c.getSalary());
     }
}

輸入項

1
ABC
MH
2000.25

堆棧跟蹤

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    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 Solution.main(Solution.java:61)

java.util.Scanner.next(); 返回一個單詞。 即閱讀直到看到換行符或空格。

java.util.Scanner.nextLine(); 返回一行。 即閱讀整行。

兩者都返回字符串。

如果要同時讀取多個字符串,請使用.nextLine(); ,但是nextLine()和其他讀取方法存在沖突。

即在此代碼

Scanner sc = new Scanner (System.in);
int A = sc.nextInt();
String S = sc.nextLine();

S將是一個空字符串。 您可以通過在程序中添加另一個.nextLine()吞下newLine字符來解決此問題。 一些詳細信息在注釋中。

暫無
暫無

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

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