gpt4 book ai didi

java - 如何在不跳到下一个标记的情况下读取特定标记时停止循环?

转载 作者:行者123 更新时间:2023-12-04 20:51:00 25 4
gpt4 key购买 nike

我正在阅读的文件在一行中有一个 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 的新手,所以请尽量简单易懂。如果难以阅读,我深表歉意;这是我的第一篇文章。

最佳答案

Scanner#hasNext(String)接受正则表达式模式

但您似乎需要搜索文字 *

所以逃避它,

Scanner.hasNext("\\*");

Scanner.hasNext(Pattern.quote("*"));

关于java - 如何在不跳到下一个标记的情况下读取特定标记时停止循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com