あなたのコード全体が利用できないように見えるので、私のような第三者が入って例全体を再構築するのは面倒です. むしろ、これは些細なケースなので、たまたま私がすでに持っている、同様の完全でわかりやすい例を提供します。このコードは、必要な方法と同様の方法で入力を受け取ります。特定の要件に応じて変更できるはずです。
//Filename: "Hotel.java"
import java.util.*;
class Customer
{
private String name;
private int room;
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return this.name;
}
public void setRoom(int room)
{
this.room=room;
}
public int getRoom()
{
return this.room;
}
}
class Hotel
{
public static void initialize(Customer RoomList[])
{
for(int i=0; i<RoomList.length; i++)
{
RoomList[i]=new Customer();
RoomList[i].setName("EMPTY");
RoomList[i].setRoom(i+1);
}
}
public static void viewList(Customer RoomList[])
{
for(int i=0; i<RoomList.length; i++)
{
if(RoomList[i].getName()=="EMPTY")
System.out.println("Room number "+RoomList[i].getRoom()+" is vacant.");
else
System.out.println("Room number "+RoomList[i].getRoom()+" is ocupied by "+RoomList[i].getName()+".");
}
System.out.println();
}
public static boolean addCustomer(Customer RoomList[], String name)
{
for(int i=0; i<RoomList.length; i++)
if(RoomList[i].getName().equals("EMPTY"))
{
RoomList[i].setName(name);
return true;
}
return false;
}
public static void showEmptyRooms(Customer RoomList[])
{
System.out.println("Available rooms are:");
for(int i=0; i<RoomList.length; i++)
if(RoomList[i].getName()=="EMPTY")
System.out.println(RoomList[i].getRoom());
System.out.println();
}
public static boolean deleteCustomer(Customer RoomList[], String name)
{
for(int i=0; i<RoomList.length; i++)
if(RoomList[i].getName().equals(name))
{
RoomList[i].setName("EMPTY");
System.out.println("Deletion successful.\n");
return true;
}
return false;
}
public static int getIndex(Customer RoomList[], String name)
{
for(int i=0; i<RoomList.length; i++)
if(RoomList[i].getName().equals(name))
return i;
return -1;
}
public static void main(String[] args)
{
Customer[] RoomList = new Customer[12];
String name;
initialize(RoomList);
Scanner input = new Scanner(System.in);
int option=0;
do
{
System.out.println(" Hotel Booking Options");
System.out.println("=====================================");
System.out.println("1: To View all rooms");
System.out.println("2: To Add customer to a room");
System.out.println("3: To Display empty rooms");
System.out.println("4: To Delete customer from a room");
System.out.println("5: Find room from customer name");
System.out.println("0: Exit");
System.out.print("\nEnter your choice: ");
option = input.nextInt();
System.out.println();
switch(option)
{
case 1:
{
viewList(RoomList);
break;
}
case 2:
{
System.out.print("Customer's name: ");
name=input.next();
System.out.println();
if(!addCustomer(RoomList, name))
System.out.println("No rooms available!");
break;
}
case 3:
{
showEmptyRooms(RoomList);
break;
}
case 4:
{
System.out.print("Customer's name: ");
name=input.next();
System.out.println();
deleteCustomer(RoomList, name);
break;
}
case 5:
{
System.out.print("Customer's name: ");
name=input.next();
System.out.println();
System.out.println("Customer's room: "+RoomList[getIndex(RoomList, name)].getRoom()+"\n");
break;
}
case 0:
{
System.out.println("\nThank you!\n");
break;
}
default:
{
System.out.println("Invalid option!\n");
break;
}
}
}while(option!=0);
}
}
編集
私はあなたのコードを試しました; これは私にとってはうまく機能しているように見えるため、問題が何であるかはわかりません。
//Filename: "myPrg.java"
import java.util.*;
class myPrg {
static Scanner myScanner = new Scanner(System.in);
static int count = 0;
public static void writeToFile(String account, int balance) {
while (!account.equals("X")) {
System.out.print("Enter account balance: ");
balance = myScanner.nextInt();
try {
System.out.println(account + " " + balance);
} catch (NullPointerException e) {
System.out.println("PrintWriter is not assigned");
}
count++;
System.out.print("Enter account number: ");
account = myScanner.next();
}
}
public static void main(String[] args) {
System.out.print("Enter account number: ");
String account = myScanner.next();
writeToFile(account, 0);
System.out.println("Code terminated successfully!");
}
}
これにより、ターミナルで次のことがわかりました。
Enter account number: qwerty
Enter account balance: 123
qwerty 123
Enter account number: asdfgh
Enter account balance: 456
asdfgh 456
Enter account number: X
Code terminated successfully!