問題描述
我已經成功編譯了我的庫存程序:
//Inventory.java 第 1 部分//這個程序是計算電子部相機庫存的價值導入 java.util.*;導入 javax.swing.*;導入 java.awt.event.*;導入java.io.*;公共類庫存{公共靜態無效主要(字符串 [] 參數){//創建掃描器以從命令窗口獲取輸入掃描儀輸入 = 新掃描儀(System.in);字符串名稱;int 項目編號;//第一個要相乘的數字int itemStock;//第二個要相乘的數字雙項價格;//雙倍總價值;//number1 和 number2 的乘積while(true){//無限循環//創建新的相機對象System.out.print("請輸入部門名稱:");//迅速的String itemDept = input.nextLine();//讀取用戶名if(itemDept.equals("stop"))//退出循環休息;{System.out.print("請輸入項目名稱:");//迅速的名稱 = input.nextLine();//讀取用戶的第一個數字input.nextLine();}System.out.print("請輸入商品編號:");//迅速的itemNumber = input.nextInt();//讀取用戶的第一個數字input.nextLine();而(項目編號 <= -1){System.out.print("請輸入有效數字:");//迅速的itemNumber = input.nextInt();//從用戶 input.nextLine() 中讀取第一個數字;}/* while 語句,條件是輸入負數提示用戶輸入正數 */System.out.print("輸入手頭的物品數量:");//迅速的itemStock = input.nextInt();//讀取用戶的第一個數字input.nextLine();而(項目庫存 <= -1){System.out.print("輸入正數的手頭物品數:");//迅速的itemStock = input.nextInt();//讀取用戶的第一個數字input.nextLine();}/* while 語句,條件是輸入負數提示用戶輸入正數 */System.out.print("輸入商品價格:");//迅速的itemPrice = input.nextDouble();//從用戶那里讀取第二個數字input.nextLine();而(項目價格 <= -1){System.out.print("請輸入商品價格的正數:");//迅速的itemPrice = input.nextDouble();//讀取用戶的第一個數字input.nextLine();}/* while 語句,條件是輸入負數提示用戶輸入正數 */Cam camera = new Cam(name, itemNumber, itemStock, itemPrice);totalValue = itemStock * itemPrice;//乘數System.out.println("部門名稱:" + itemDept);//顯示部門名稱System.out.println("物品編號:" + camera.getItemNumber());//顯示商品編號System.out.println("產品名稱:" + camera.getName());//顯示項目System.out.println("數量:" + camera.getItemStock());System.out.println("單價" + camera.getItemPrice());System.out.printf("總值為:$%.2f
" + totalValue);//顯示產品}//結束 while 方法}//結束方法 main}/* 結束類庫存 */類凸輪{私有字符串名稱;私人 int itemNumber;私有 int itemStock;私人雙項價格;私人字符串部門名稱;公共凸輪(字符串名稱,int itemNumber,int itemStock,double itemPrice){this.name = 名稱;this.itemNumber = itemNumber;this.itemStock = itemStock;this.itemPrice = itemPrice;}公共字符串 getName(){返回名稱;}公共 int getItemNumber(){返回項目編號;}公共 int getItemStock(){返回項目庫存;}公共雙 getItemPrice(){返回項目價格;}}
<塊引用>
C:Java>java 庫存
輸入部門名稱:電子
輸入項目名稱:相機
輸入貨號:12345
輸入手頭的物品數量:8
輸入商品價格:100.50
部門名稱:電子學
貨號:12345
產品名稱:相機
數量:8
單價100.5
總值是:
線程主"java.util.MissingFormatArgumentException 中的 $Exception:
格式說明符.2f"
在 java.util.Formatter.format(未知來源)
在 java.io.PrintStream.format(未知來源)
在 java.io.PrintStream.printf(未知來源)
在 Inventory.main(Inventory.java:82)
我似乎遇到了這種格式錯誤,不明白為什么.
如果你使用printf
,你需要將占位符指定為?code>printf參數以及格式細繩.在您的情況下,您通過附加金額來傳遞單個字符串,因此會出現錯誤.
System.out.printf("總值為:$%.2f
" + totalValue)
應該替換為
System.out.printf("總值為:$%.2f
", totalValue)
I have been successful in compiling my inventory program:
// Inventory.java part 1
// this program is to calculate the value of the inventory of the Electronics Department's cameras
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class Inventory
{
public static void main(String[] args)
{
// create Scanner to obtain input from the command window
Scanner input = new Scanner (System.in);
String name;
int itemNumber; // first number to multiply
int itemStock; // second number to multiply
double itemPrice; //
double totalValue; // product of number1 and number2
while(true){ // infinite loop
// make new Camera object
System.out.print("Enter Department name: "); //prompt
String itemDept = input.nextLine(); // read name from user
if(itemDept.equals("stop")) // exit the loop
break;
{
System.out.print("Enter item name: "); // prompt
name = input.nextLine(); // read first number from user
input.nextLine();
}
System.out.print("Enter the item number: "); // prompt
itemNumber = input.nextInt(); // read first number from user
input.nextLine();
while( itemNumber <= -1){
System.out.print("Enter valid number:"); // prompt
itemNumber = input.nextInt(); // read first number from user input.nextLine();
} /* while statement with the condition that negative numbers are entered
user is prompted to enter a positive number */
System.out.print("Enter number of items on hand: "); // prompt
itemStock = input.nextInt(); // read first number from user
input.nextLine();
while( itemStock <= -1){
System.out.print("Enter positive number of items on hand:"); // prompt
itemStock = input.nextInt(); // read first number from user
input.nextLine();
} /* while statement with the condition that negative numbers are entered
user is prompted to enter a positive number */
System.out.print("Enter item Price: "); // prompt
itemPrice = input.nextDouble(); // read second number from user
input.nextLine();
while( itemPrice <= -1){
System.out.print("Enter positive number for item price:"); // prompt
itemPrice = input.nextDouble(); // read first number from user
input.nextLine();
} /* while statement with the condition that negative numbers are entered
user is prompted to enter a positive number */
Cam camera = new Cam(name, itemNumber, itemStock, itemPrice);
totalValue = itemStock * itemPrice; // multiply numbers
System.out.println("Department name:" + itemDept); // display Department name
System.out.println("Item number: " + camera.getItemNumber()); //display Item number
System.out.println("Product name:" + camera.getName()); // display the item
System.out.println("Quantity: " + camera.getItemStock());
System.out.println("Price per unit" + camera.getItemPrice());
System.out.printf("Total value is: $%.2f
" + totalValue); // display product
} // end while method
} // end method main
}/* end class Inventory */
class Cam{
private String name;
private int itemNumber;
private int itemStock;
private double itemPrice;
private String deptName;
public Cam(String name, int itemNumber, int itemStock, double itemPrice) {
this.name = name;
this.itemNumber = itemNumber;
this.itemStock = itemStock;
this.itemPrice = itemPrice;
}
public String getName(){
return name;
}
public int getItemNumber(){
return itemNumber;
}
public int getItemStock(){
return itemStock;
}
public double getItemPrice(){
return itemPrice;
}
}
C:Java>java Inventory
Enter Department name: Electronics
Enter item name: camera
Enter the item number: 12345
Enter number of items on hand: 8
Enter item Price: 100.50
Department name:Electronics
Item number: 12345
Product name:camera
Quantity: 8
Price per unit100.5
Total value is:
$Exception in thread "main" java.util.MissingFormatArgumentException:
Format specifier '.2f'
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at Inventory.main(Inventory.java:82)
I seem to come to this format error and cannot see why.
If you are using printf
, you need to specify the placeholders as printf
parameters along with the format string. In your case you are passing a single string by appending the amount hence the error.
System.out.printf("Total value is: $%.2f
" + totalValue)
should be replaced by
System.out.printf("Total value is: $%.2f
", totalValue)
這篇關于MissingFormatArgumentException 錯誤的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!