gpt4 book ai didi

java - 无法使用扫描仪读取 Double

转载 作者:行者123 更新时间:2023-12-01 12:22:10 28 4
gpt4 key购买 nike

我有一个奇怪的问题:

如果我传递了字符串“7+4”,我对 nextDouble() 的调用会抛出异常 InputMismatchException。

这里是完整的代码:

    char ch;
try {
ch = getChar();
}
catch(EOF e) //On détecte la fin de la chaine
{
return new Token(null);
}

//Si c'est un chiffre
if(Character.isDigit(ch))
{
pushback(ch);

//On récupère un nombre
Scanner sc = new Scanner(in);
Token t = new Token(TokenKind.Number, sc.nextDouble());
sc.close();

return t;
}

getChar 方法:

private char getChar()
{
try
{
//On essaie de lire un charactère.
int tmp_char = in.read();

//Si le charctère n'est pas un caractère ASCII, on lève une exception.
if(Character.charCount(tmp_char) != 1) throw new IllegalCharacterException();
return Character.toChars(tmp_char)[0];
}
catch (IOException e) {throw new EOF();}
}

以及推回(char c)

private void pushback(char ch)
{
try
{
in.unread(ch);
}
catch (IOException e) {e.printStackTrace(); throw new RuntimeException("IOException");}
}

in是一个用“7+4”字符串初始化的PushbackReader。

如果我在 nextDouble() 之前调用 nextLine(),它会返回“4+7”。

我做错了什么?其实我不太明白...

最佳答案

好的,如果其他人遇到问题,我会发布解决方案。

如果你想获取字符串中的下一个 Double。首先在扫描仪上调用 useDelimiter("")

编辑:不是关于解析 Double 而是关于 Scanner 和 PushbackReader :它们似乎不能一起工作......所以我的技巧在我的情况下没有用!

关于java - 无法使用扫描仪读取 Double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596468/

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