[英]Java Exception in thread “main” java.util.UnknownFormatConversionException: Conversion = '-'
[英]Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = ':'
我试图用扫描仪运行我的代码,当它转到第二个问题时突然出错。
import java.util.Scanner;
public class MyClass {
public static void main(String args[]) {
Scanner stats = new Scanner(System.in);
double base,current;
float bonus;
int level;
System.out.print("Enter the base attack speed: ");
base = stats.nextDouble();
System.out.printf("Enter the bonus attack speed %: " + "%.2f");
bonus = stats.nextFloat();
System.out.println("Enter the level: ");
level = stats.nextInt();
current = (base*1+bonus*level-1) /100;
System.out.print("The character's current speed is: " + current);
}
}
%
是printf
(和String.format
)用于标识占位符的内容,该占位符将由作为第二个参数提供的参数填充。
因此,您在此代码中有 2 个错误:
attack speed %:
中的attack speed %:
被 printf 识别为占位符,但您想打印一个实际的百分比符号。 要打印它,请写下 2% 的符号,即单个百分比符号的 'printf-ese': "Enter the bonus attack speed%%: "
。
然后你给它添加了"%.2f"
,这很奇怪,你认为这是什么? 正如所写的那样,如果您按照 #1 修复错误,您会立即收到另一个异常,因为这需要一个参数。 这个想法是你可以这样做: System.out.printf("The speed of the vehicle in km/h is: %.2f", someValue);
. 如果 someValue 是,比如说,39.8993,那将打印字符串"The speed of the vehicle in km/h is: 39.90"
,因为你要求:打印一个值作为浮点值,最多 2 个小数位。 你没有任何输入可以在那里打印——你仍然在询问用户,你不能使用这种东西来“格式化”用户应该输入的内容。稍后再说。 所以大概你想摆脱整个“%.2f”的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.