- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在编写一个小程序来计算学生最好成绩的平均值,当我运行它时,我在线程“main”java.util.InputMismatchException中收到此错误异常。
我看到一篇文章说要使用 nextLine 然后使用 parseInt (在本例中为 parseFloat) ,但我不允许在这里使用它,所以我正在寻找关于我可以做什么的另一种意见.
代码:
导入java.util.Scanner;
公开课 G2a {
static float average(float[] vals) { //Returns the average of an array;
float avg = 0F;
for (int i = 0; i < vals.length; i++)
avg += vals[i];
return avg /= vals.length;
}
static int indexOfMin(float[] vals) { // Returns the index of the minimum;
int idx = -1;
for (int i = 0; i < vals.length ; i++) {
float v = vals[i];
if(v>=0 && (idx==-1 || v<vals[idx])) idx=i;
}
return idx;
}
static float[] removeMins(int n, float[] vals) { //Removes n minimums of the array and returns a new array without them;
while (n > 0) {
int a = indexOfMin(vals);
vals[a] = -1;
--n;
}
float[] res = new float[vals.length - n];
int b = 0;
for (int i = 0; i < vals.length; i++)
if (vals[i] != -1) {
res[b] = vals[i];
++b;
}
return res;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Number of Grades ? ");
float[] vals= new float[in.nextInt()];
for (int i = 0; i < vals.length ; i++) {
System.out.println("Grade "+ (i+1) +" ? ");
vals[i]=in.nextFloat(); //Line of the Error;
}
System.out.println("Number of Grades to the Average ? ");
int n = in.nextInt();
float [] best = removeMins(n,vals);
System.out.print("Best " +n+ " Grades: ");
for (int i = 0; i < best.length ; i++)
System.out.print(best[i]);
System.out.println("");
System.out.println("Average of the " +n+ " Best Grades = "+average(best));
}
}
编辑
我正在使用 Intellij
输入和完整错误消息:
年级数?
5
1级?
7.3
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:860)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.nextFloat(Scanner.java:2399)
at G2a.main(G2a.java:42)
进程已完成,退出代码为 1
最佳答案
我猜你在输入中使用了类似的东西:
1.5
请改用以下内容:
1,5
输入 float 。如果您使用点,解决方案可能是在 Scanner
中使用精确的区域设置。尝试将 main()
方法中的第一行更改为:
Scanner in = new Scanner(System.in);
至:
Scanner in = new Scanner(System.in).useLocale(Locale.US);
此行将精确显示您在输入十进制数字时要使用的表示法。看,它如何改变了输入的读取方式(现在点可以,而逗号不行):
Number of Grades ?
3
Grade 1 ?
1.3
Grade 2 ?
1,4
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Unknown Source)
at java.base/java.util.Scanner.next(Unknown Source)
at java.base/java.util.Scanner.nextFloat(Unknown Source)
at G2a.main(G2a.java:44)
关于java - 使用 nextFloat() 时线程 "main"java.util.InputMismatchException 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244290/
我正在尝试使用此代码生成随机 float 。 float rangeDuration2 = maxDuration - minDuration; 但由于某种原因,java 不允许我像使用 .next
这个问题在这里已经有了答案: Scanner double value - InputMismatchException (2 个答案) 关闭 6 年前。 如果我执行下面的代码: import ja
最初在 Eclipse 中运行以下命令导致 Scanner 无法识别控制台中的回车符,有效地阻止了进一步的输入: price = sc.nextFloat(); 在代码之前添加这一行会导致 Scann
float minX = 50.0f; float maxX = 100.0f; Random rand = new Random(); float finalX = rand.nextFloat(m
我试图从由整数和浮点值组成的文件中仅读取浮点值,但是当我执行 scan.nextFloat() 时,它仍然读取下一个整数值并将其转换为 float 并将其添加到我的点列表中。下面是我正在做的事情。 w
我需要它跳过文本文件的第一行,然后跳过表格的前两列。到目前为止我已经: }public static float [][] read_data(String strFileName){
这段代码没有语法错误,但是当我输入浮点值时,出现了InputMismatchException。 Double 值而不是 float 会得到相同的异常。如果我以 F.f 格式(带点)输入每个值,则会出
自从听说 java 的 SplittableRandom 以来,我一直在使用它,因为它速度快,而且不需要多线程。然而,虽然它几乎包含了 Random 类的所有方法,但它并没有随 nextFloat()
我开始编写 C++,我正在尝试读取格式如下的文本文件: 32.0 12.43 503.2 3.212 等等 在 Java 中,我可以将 Scanner 与 .nextFloat()
我有一个 while 条件,当文件有下一个 float (scanner.hasNextFloat()) 时从文本文件中读取并将 float 分配给数组。但是,我收到 java.util.InputM
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
所以我正在编写一个小程序来计算学生最好成绩的平均值,当我运行它时,我在线程“main”java.util.InputMismatchException中收到此错误异常。 我看到一篇文章说要使用 nex
我正在阅读 java.util.Random 类并注意到没有 nextDouble()、nextFloat() 和 nextLong() 可以接受一个绑定(bind)。 有很多方法可以完成它like
一方面,Math.random() 或 new Random().nextFloat() 应该返回 0 到 1 之间的值,但不包括 1,另一方面, float 可能不准确,该值可能会因实际情况而异值(
根据 java.util.Random 的文档, Java类工具 nextFloat通过 next(24) / ((float)(1 << 24)) (即 24 位除以 224 的随机非负整数)。该文
我是一名优秀的程序员,十分优秀!