繁体   English   中英

为什么我收到输入不匹配错误 (Java)

[英]Why am i getting Input Mismatch Error (Java)

到目前为止,我有这个。

  import java.util.*;
  public class Moviesol{
  public static void main (String[] args){
    Scanner sc= new Scanner(System.in);
    Movie[] m = new Movie[3];
    for(int i=0;i<3;i++){
        String name =sc.nextLine();

        String company =sc.nextLine();

        String genre =sc.nextLine();

        Long budget =sc.nextLong();
        m[i] = new Movie(name, company, genre, budget);
    }

    String ip = sc.nextLine();

    MovieByGenre(m , ip);


}
public static void MovieByGenre(Movie[] m, String ip ){
    for(int i=0;i<3;i++){
        if(((m[i].getgenre()).equals(ip))&& (m[i].getbudget()>=80000000)){

                System.out.println("High Budget Movie");}
        else if(((m[i].getgenre()).equals(ip))&& (m[i].getbudget()<=80000000)){ 
                System.out.println("Low Budget Movie");
        }
    }
}
}

这是另一个班级

class Movie {
private String name;
private String company;
private String genre;
private Long budget;
public Movie(String name, String company, String genre, Long budget){
    this.name=name;
    this.company=company;
    this.genre=genre;
    this.budget=budget;
}
public String getgenre(){
    return genre;
}
public Long getbudget(){
    return budget;
        }
}

我正在使用 getter 方法从其他类中获取信息。 该程序需要

字符串类型的“名称”

字符串类型的“公司”

字符串类型的“流派”

长型的“预算”。

我需要将流派与 'ip' 字符串匹配,如果匹配,则比较预算,并相应地打印

我的输入

asd
asd
asd asd
90000000000
asd
asd
asd asd
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextLong(Scanner.java:2373)
at java.base/java.util.Scanner.nextLong(Scanner.java:2328)
at Moviesol.main(Moviesol.java:13)

请帮忙!!!

异常意味着从文件读取的输入不会进入您要存储它的对象。 例如,如果下一个元素是“abcd”,scanner.nextInt() 就会抛出异常。

您的相关代码是:

        String name =sc.nextLine();
        String company =sc.nextLine();
        String genre =sc.nextLine();
        Long budget =sc.nextLong();

因此,对于每部电影,您必须输入 3 行文本和一个长整数。

asd asd只有一行,而且肯定不是数字。

import java.util.*;
public class Moviesol{
public static void main (String[] args){
Scanner sc= new Scanner(System.in);
Movie[] m = new Movie[3];
for(int i=0;i<3;i++){
    String name =sc.nextLine();

    String company =sc.nextLine();

    String genre =sc.nextLine();

    String strBudget =sc.nextLine();
    Long budget = null;
    try {
        budget = Long.parseLong(strBudget);
    } catch (NumberFormatException ex) {
        // what happens if they didn't enter a number
    }
    m[i] = new Movie(name, company, genre, budget);
}

String ip = sc.nextLine();

MovieByGenre(m , ip);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM