我应该首先接收一个整数输入,然后是一个双精度值,然后是一个字符串。然后我应该将它插入到一个链表中。 //TODO 部分是我实现代码的地方。我真的不知道为什么我会收到这些错误。我看到建议使用 useLocal() 方法,但它对错误没有帮助。
代码如下:
import java.util.*;
public class MileageTrackerLinkedList {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
scnr.useLocale(Locale.US);
// References for MileageTrackerNode objects
MileageTrackerNode headNode;
MileageTrackerNode currNode;
MileageTrackerNode lastNode;
double miles;
String date;
int i;
int count;
// Front of nodes list
headNode = new MileageTrackerNode();
lastNode = headNode;
// TODO: Scan the number of nodes
count = scnr.nextInt();
// TODO: For the scanned number of nodes, scan
// in data and insert into the linked list
for (i = 0; i < count; ++i) {
miles = scnr.nextDouble();
date = scnr.nextLine();
currNode = new MileageTrackerNode(miles, date);
lastNode.insertAfter(currNode);
lastNode = currNode;
}
// TODO: Call the printNodeData() method
// to print the entire linked list
for (i = 0; i < count; ++i) {
headNode.printNodeData();
headNode.getNext();
}
}
}
这是输入:
3
2.2
7/2/18
3.2
7/7/18
4.5
7/16/18
这里是错误信息:
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 MileageTrackerLinkedList.main(MileageTrackerLinkedList.java:29)
答案 0 :(得分:0)
不能混合使用 nextLine 和 nextAnythingElse。
简单的解决方法是使用 next()
来读取一行文本。为此,首先告诉扫描仪它应该一次为您提供一行答案。这通常就是您想要的(您向用户询问一些数据,然后他们按回车键。瞧:一行)。
在 new Scanner
之后,始终运行:scanner.useDelimiter("\r?\n");
。然后将 .next()
用于文本,.nextInt()
用于整数等。