这个程序运行得很好,但出于某种原因,当我要求输入名称时,它只会保存响应中的第一个单词。例如,如果我在稍后使用它输入“Jon Snow”时输出它只会显示“Jon”。
import java.util.Scanner;
public class help
{
public static void main (String[] args)
{
Scanner input = new Scanner(System.in); //object for user input
//constant
final double tax = 0.08; //Sales tax
//variables
int choice; //menu selection/case switch
String name; //customer's name
String address; //customer's address
String email; //customer's email address
String item; //item purchased
double itemsPurchased; //number of items purchased
double itemPrice; //price of item purchased
double total; //total for purchase
double grandTotal; //total + tax
double taxAmount; //tax of the purchase
//Menu
System.out.println("1. Enter Customer Information");
System.out.println("2. Display Total Bill");
System.out.println("3. Quit\n");
System.out.print("Enter 1, 2, or 3 to make your selection: ");
choice = input.nextInt();
switch(choice){
//Customer info
case 1:
//inputting info
System.out.println("\nPlease enter the customers information.");
//name
System.out.print("Name: ");
name = input.next();
input.nextLine();
//address
System.out.print("Address: ");
address = input.nextLine();
//email
System.out.print("Email Adress: ");
email = input.next();
input.nextLine();
//reading info back to user
System.out.println("\nThe customer has successfully been added to our list with the following information: ");
System.out.println("Name: " + name);
System.out.println("Address: " + address);
System.out.println("Emal: " + email);
break;
//Customer receipt
case 2:
//name
System.out.println("");
System.out.print("Enter customer's name: ");
name = input.next();
input.nextLine();
//name of item purchased
System.out.print("Enter item purchased: ");
item = input.next();
input.nextLine();
//number of items purchased
System.out.print("Number of items purchased: ");
itemsPurchased = input.nextDouble();
input.nextLine();
//price of item
System.out.print("Price of item: ");
itemPrice = input.nextDouble();
input.nextLine();
//defining taxAmount, total, and grandTotal
total = (itemPrice * itemsPurchased);
taxAmount = (total*tax);
grandTotal = total + taxAmount;
//bill
System.out.println("");
System.out.println(name);
System.out.println("");
System.out.printf("%-20s %-15s %-15s\n", "Product Purchased", "Quantity", "Total Cost");
System.out.println("");
System.out.printf("%-20s %-15s %-15s\n", item, itemsPurchased, total);
System.out.println("");
System.out.printf("%-20s %-15s %-15s\n", "Tax(@8%):", "", taxAmount);
System.out.printf("%-20s %-15s %-15s\n", "Total Cost:", "", grandTotal);
break;
//Quit
case 3:
System.out.println("End Program");
break; //void
//Default statement
default:
System.out.print("Invalid value entered.");
}//end case
}//end main
}//end class
答案 0 :(得分:5)
name = input.nextLine()
你不是在阅读整行,而只是第一个单词。
对于Scanner
类,next()
函数读取下一个标记化输入,而nextLine()
检索整行,直到回车(\n
)。
Eg. "happy days again"
next() // "happy"
next() // "days"
next() // "again"
or,
nextLine() // "happy days again"
编辑:请尝试以下代码
input.nextLine(); // IMP: To get the carriage return after choice is typed
//name
System.out.println("");
System.out.print("Enter customer's name: ");
name = input.nextLine();
//name of item purchased
System.out.print("Enter item purchased: ");
item = input.nextLine();
答案 1 :(得分:0)
试试这个,
使用next()
会为您提供1st Word
,但如果您需要whole line use nextLine()
。
name = input.nextLine();
例如:
Scanner scan = new Scanner(System.in);
name = input.nextLine();