微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不断收到输入不匹配异常错误

如何解决为什么我不断收到输入不匹配异常错误

import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
    public static void main (String[] args)
    {
        Scanner sc=new Scanner(system.in);
        Servicecentre[] ab=new Servicecentre[4];
        String n,b;
        double c;
        boolean o;
        System.out.println("enter the details");
        for(int i=0;i<4;i++)
        {
            n=sc.nextLine();
            b=sc.nextLine();
            c=sc.nextDouble();
            sc.nextLine();
            o=sc.nextBoolean();
            ab[i]=new Servicecentre(n,b,c,o);
        }
        double ans1=findavg(ab);
        if(ans1==0)
        {
            System.out.println("No online service available");
        }
        else
        {
            System.out.format("%.1f",ans1);
        }
    }
    public static double findavg(Servicecentre[] ab)
    {
        double s=0;
        double c=0;
        for(int i=0;i<ab.length;i++)
        {
            if(ab[i].getonline())
            {
                s=s+ab[i].getcharge();
                c=c+1;
            }
        }
        if(c==0)
            return 0;
        else
            return s/c;
    }
}

class Servicecentre
{
    String name;
    String branch;
    double charge;
    boolean online;
    Servicecentre(String name,String branch,double charge,boolean online)
    {
        this.name=name;
        this.branch=branch;
        this.charge=charge;
        this.online=online;
    }
    String getname()
    {
        return name;
    }
    String getbranch()
    {
        return branch;
    }
    double getcharge()
    {
        return charge;
    }
    boolean getonline()
    {
        return online;
    }
}

这是我的程序代码。 我被要求输入以下类型

  • 名称 – 字符串
  • 分支 – 字符串
  • 充电 - 双倍
  • 在线 – 布尔值。

只有当在线为真时,我才被要求找到费用的平均值。以下是他们的输入。

  • 电视
  • 科钦
  • 2000
  • 巴贾吉
  • 钦奈
  • 1500
  • 真实
  • TCH
  • 电视视频
  • 1000
  • 箭头
  • 钦奈
  • 2500
  • 真实

我在粗体上反复出错,我不知道我做错了什么。错误就像

"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.nextDouble(Scanner.java:2564)
at HelloCodiva.main(Main.java:19)"

请帮我写代码。我是 Java 新手。

解决方法

通常,当您不小心输入错误的输入时,您会得到 java.util.InputMismatchException。在使用之前验证您的输入,您将不会收到此错误。

例如

    Scanner sc = new Scanner(System.in);
    int number;
    System.out.println("Please enter a number:");
    while (!sc.hasNextInt()) {
        System.out.println("That's not a number!");
        sc.next(); // this is important as it clears the input buffer
    }
    number = sc.nextInt(); // finally recieve that input

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。