我讀的文件具有String
後跟int
在同一行,然後繼續,直到它達到這個人物:*
如何在沒有跳到下一個標記的情況下讀取特定標記時停止循環?
例如:
A 1300
B 1200
C 1100
D 1000
*
我需要它停止讀取文件,一旦到達恆星就停止循環。當我做了一個if語句,它並沒有*
讀,它會跳到下一行,符合市場預期,但導致對齊問題與在讀的下一個標記
這裏是我的代碼:
static GradingScale reportCard = new GradingScale();
public static void main(String[] args) {
readInputFile();
javax.swing.JOptionPane.showMessageDialog(null,reportCard.toString());
}
public static void readInputFile(){
try{
Scanner file = new Scanner(new File("grades.txt"));
int maxPoints = file.nextInt();
reportCard.setMaxPoints(maxPoints);
while(!file.hasNext("*")){
String grade = file.next();
int points = file.nextInt();
double percent = points/(maxPoints*1.0);
reportCard.addGradeLevel(grade, points, percent);
}
}
catch(java.io.FileNotFoundException fnfe){
javax.swing.JOptionPane.showMessageDialog(null, "File not found");
}
}
我嘗試使用hasNext(Pattern)
方法,但我不斷收到此錯誤:
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.sequence(Pattern.java:2123)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.util.Scanner$1.create(Scanner.java:367)
at java.util.Scanner$1.create(Scanner.java:365)
at sun.misc.LRUCache.forName(LRUCache.java:72)
at java.util.Scanner.hasNext(Scanner.java:1400)
at mp1.MP1.readInputFile(MP1.java:32)
at mp1.MP1.main(MP1.java:23)
導致此:
private void dispatchUncaughtException(Throwable e) {
getUncaughtExceptionHandler().uncaughtException(this, e);
}
我是在做一些錯誤的方法,或者我應該完全做其他事情嗎?
我對java很陌生,所以請儘量讓它儘可能容易理解。 如果這很難讀,我很抱歉;這是我的第一篇文章。
謝謝!那正是我期待的! – Jordyn