gpt4 book ai didi

java - 在不重新提示的情况下从其他类接收数组到方法中时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:31 24 4
gpt4 key购买 nike

解决这个问题真的很困难。我尝试寻找类似的情况,但似乎找不到任何有帮助的东西。我觉得我已经完成了 99%,这可能是非常简单的事情,但我一辈子都无法弄清楚。

我有两个类。 A 级和餐厅。

问题是,在我对 ClassA 主方法中 printRestaurant() 的方法调用中,某些方法需要接收包含餐厅名称的数组,但是当我使用这些方法时,它会在每次调用下一个方法时重新提示输入餐厅名称,而不是只提示一次然后继续执行下一个方法。

A类:

import java.util.Scanner;
public class ClassA
{

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String ownerName = "";

System.out.printf("%nWhat is the name of the owner?");
ownerName = input.nextLine();
Restaurant rest = new Restaurant(ownerName);
rest.arraySize();
rest.printRestaurant(ownerName,rest.setRestaurants(),rest.setCustomers(rest.setRestaurants()),rest.calcAvgDailyRev(rest.setRestaurants()));

input.close();
System.exit(0);

}//END main()

}//END Application Class ClassA

餐厅:

public class Restaurant
{
//Fields
String ownerName = "";
int size = 0;
Scanner input = new Scanner(System.in);

public Restaurant()
{

}//END Restaurant()

public Restaurant(String name)
{
ownerName = name;
}//END Restaurant(String ownerName)

public void arraySize()
{
System.out.printf("%n%s, how many restaurants do you own? ",ownerName);
size = input.nextInt();
}//END arraySize()

public String[] setRestaurants()
{
String[] restNames = new String[size];

input.nextLine(); // clears buffer
for(int row = 0;row < restNames.length; row++)
{

System.out.printf("%nEnter restaurant %d",row+1);
restNames[row] = input.nextLine();

}//END for col < restNames.length

return restNames;

}//END setRestaurants()

public int[] setCustomers(String array[])
{
int[] noCustomers = new int[size];
for(int i = 0;i<noCustomers.length;i++)
{
System.out.printf("%nEnter the average number of daily customers for %s: ",array[i]);
noCustomers[i] = input.nextInt();
}//END for i < size
return noCustomers;
}//END setCustomers()

public double[] calcAvgDailyRev(String array[])
{
double[] avgBill = new double[size];
input.nextLine(); //Clears buffer

for(int i = 0;i<avgBill.length;i++)
{
System.out.printf("%nEnter the average bill for %s: ",array[i]);
avgBill[i] = input.nextDouble();

}//end for i < size
return avgBill;

}//END calcAvgDailyRev(String array)

public void printRestaurant(String name, String restName[], int customers[], double dailyAvg[])
{
System.out.printf("%n%n%S's RESTAURANTS",name);


for(int i=0;i<size;i++)
{
double avgRevenue = customers[i]*dailyAvg[i];

System.out.printf("%n%nRestaurant: %s"
+"%nAverage No of Daily Customers: %d"
+"%nAverage Bill Per Customer: $%,.2f"
+"%nAverage Daily Revenue: $%,.2f",restName[i],customers[i],dailyAvg[i],avgRevenue);
}//END for i < size

}//END printRestaurant()







}//END Restaurant

以下是所需输出的示例:

楼主叫什么名字?悬崖克里夫,你有多少家餐馆? 2进入餐厅1:鸡蛋进入餐厅2:培根输入鸡蛋的平均每日顾客数量:250输入培根的平均每日顾客数量:200输入每位客户的鸡蛋平均账单:12输入每位顾客的培根平均账单:15

克里夫餐厅

餐厅:鸡蛋平均每日顾客数量:250每个客户的平均账单:12.00 美元平均每日收入:3,000.00 美元

餐厅:培根平均每日顾客数量:200每个客户的平均账单:15.00 美元平均每日收入:3,000.00 美元

如果您需要任何其他信息,请告诉我。任何帮助将不胜感激。

最佳答案

您需要该方法返回的值。但在这里您正在调用该方法,并且根据方法定义提示输入。因此,您可以保存返回类型并在需要的地方使用,而不是一次又一次地调用该方法。例如

    String restName[] = rest.setRestaurants();
int numberOfCust[] = rest.setCustomers(restName);
double dailAvgRev[] = rest.calcAvgDailyRev(restName);

您可以使用这些值restName、numberOfCust、dailAvgRev来打印餐厅信息。

关于java - 在不重新提示的情况下从其他类接收数组到方法中时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43526310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com