问题描述
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