繁体   English   中英

线程“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 个错误:

  1. attack speed %:中的attack speed %:被 printf 识别为占位符,但您想打印一个实际的百分比符号。 要打印它,请写下 2% 的符号,即单个百分比符号的 'printf-ese': "Enter the bonus attack speed%%: "

  2. 然后你给它添加了"%.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM