0
ユーザーがアイテム#1の名前の文字列値を入力し、アイテム#1の価格の整数値、次にアイテム#1の整数値を入力する単純なプログラムを設計しています量。プログラムをコンパイルして実行すると、アイテム#1の名前のユーザー入力を入力できますが、アイテム#2の名前は入力できません。商品価格#2と商品数量#2のユーザー入力を必要とするため、なぜこれがどういうわけかはわかりません。どうしてですか?ここでJavaの対話でユーザー入力のスキャンが許可されない
は、関連するクラスファイルの両方がある:
ItemToPurchase.java:
public class ItemToPurchase {
private String itemName;
private int itemPrice;
private int itemQuantity;
public void defaultValues() {
itemName = "none";
itemPrice = 0;
itemQuantity = 0;
}
public void setName(String newName) {
itemName = newName;
}
public String getName() {
return itemName;
}
public void setPrice(int newPrice) {
itemPrice = newPrice;
}
public int getPrice() {
return itemPrice;
}
public void setQuantity(int newQuantity) {
itemQuantity = newQuantity;
}
public int getQuantity() {
return itemQuantity;
}
}
そしてメインクラス -
ShoppingCartPrinter.java含むクラス:
import java.util.Scanner;
public class ShoppingCartPrinter {
public static void main(String [] args) {
Scanner scnr = new Scanner(System.in);
ItemToPurchase item1 = new ItemToPurchase();
ItemToPurchase item2 = new ItemToPurchase();
System.out.println("Item 1");
System.out.println("Enter the item name:");
item1.setName(scnr.nextLine());
System.out.println(item1.getName());
System.out.println("Enter the item price:");
item1.setPrice(scnr.nextInt());
System.out.println(item1.getPrice());
System.out.println("Enter the item quantity:");
item1.setQuantity(scnr.nextInt());
System.out.println(item1.getQuantity());
System.out.println("");
System.out.println("Item 2");
System.out.println("Enter the item name:");
item2.setName(scnr.nextLine());
System.out.println(item2.getName());
System.out.println("Enter the item price:");
item2.setPrice(scnr.nextInt());
System.out.println(item2.getPrice());
System.out.println("Enter the item quantity:");
item2.setQuantity(scnr.nextInt());
System.out.println(item2.getQuantity());
scnr.close();
}
}
で
scnr.nextInt()
を交換してみてください。おそらく私はちょうどScannerがどのように機能するのか(これ以上の研究が必要な問題の一部)を知るのに苦労しているかもしれませんが、なぜインタラクション画面でそれをスキップするのでしょうか?それはnextIntに何を入力した後に暗黙の空白があるからですか? –