我制作了一个简单的程序,该程序基于公式中的3个数字来计算增量。但是,小数点后的分数和数字(例如3.33、3 / 4)存在问题。如果我用任何字母代替它,则会出现错误:
线程“主”中的异常java.util.InputMismatchException在 java.base / java.util.Scanner.throwFor(Scanner.java:939)在 java.base / java.util.Scanner.next(Scanner.java:1594)位于 java.base / java.util.Scanner.nextInt(Scanner.java:2258)在 java.base / java.util.Scanner.nextInt(Scanner.java:2212)在 Main.main(Main.java:11)
如何添加补丁程序才能使程序正常运行?我的代码如下:
import attr
@attr.s(auto_attribs=True)
class Parent:
name: str
age: int
ugly: bool = False
def print_name(self):
print(self.name)
def print_age(self):
print(self.age)
def print_id(self):
print(f"The Name is {self.name} and {self.name} is {self.age} year old")
@attr.s(auto_attribs=True)
class Child(Parent):
school: str
ugly: bool = True
答案 0 :(得分:2)
如果要接受输入数字为十进制,则应使用float or double
类型。例如
double n1;
n1 = reader.nextDouble();
关于分数的情况,您应该使用String类型,然后将其转换为数字类型。例如
String tmp;
Scanner reader= new Scanner(System.in).useLocale(Locale.US);
System.out.print("calculation of the delta. Enter the first number (a from the formula)");
tmp = reader.next();
n1 = fractionToDouble(tmp);
tmp = reader.next();
n2 = fractionToDouble(tmp);
....
添加fractionToDouble转换方法。参考:mishadoff's answer
static double fractionToDouble(String ratio) {
if (ratio.contains("/")) {
String[] rat = ratio.split("/");
return Double.parseDouble(rat[0]) / Double.parseDouble(rat[1]);
} else {
return Double.parseDouble(ratio);
}
}
答案 1 :(得分:1)
将int更改为双首
<Pivot IsTabStop="False">
<PivotItem Header="Test">
<StackPanel Spacing="10">
<Button Content="Button 1" IsTabStop="True"/>
<Button Content="Button 2" IsTabStop="False"/>
</StackPanel>
</PivotItem>
</Pivot>
,您需要设置Locale.us来解决此InputMismatchException。否则,它可以使用“,”或其他字符作为十进制分隔符。这样可以解决您的十进制问题
final double n1; //a
final double n2; //b
final double n3; //c
n1 = reader.nextDouble();
n2 = reader.nextDouble();
n3 = reader.nextDouble();