Java 在不重新提示的情况下将从其他类接收的数组放入方法时遇到问题
这个问题真的很难解决。我试图寻找类似的情况,但似乎找不到任何有帮助的。我觉得我已经掌握了99%的方法,这可能是非常简单的事情,但我一辈子都搞不清楚 我有两节课。一流餐厅 问题是,在我对ClassA主方法中printRestaurant()的方法调用中,一些方法需要接收带有餐厅名称的数组,但当我使用这些方法时,每次点击下一个方法时,它都会对餐厅名称重新进行提示,而不是只提示一次,然后再执行下一个方法 A类:Java 在不重新提示的情况下将从其他类接收的数组放入方法时遇到问题,java,arrays,class,object,methods,Java,Arrays,Class,Object,Methods,这个问题真的很难解决。我试图寻找类似的情况,但似乎找不到任何有帮助的。我觉得我已经掌握了99%的方法,这可能是非常简单的事情,但我一辈子都搞不清楚 我有两节课。一流餐厅 问题是,在我对ClassA主方法中printRestaurant()的方法调用中,一些方法需要接收带有餐厅名称的数组,但当我使用这些方法时,每次点击下一个方法时,它都会对餐厅名称重新进行提示,而不是只提示一次,然后再执行下一个方法 A类: import java.util.Scanner; public class ClassA
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
公共级餐厅
{
//田地
字符串ownerName=“”;
int size=0;
扫描仪输入=新扫描仪(System.in);
公共餐厅()
{
}//终点餐厅()
公共餐厅(字符串名称)
{
ownerName=名称;
}//结束餐厅(字符串所有者名称)
公共无效排列()
{
System.out.printf(“%n%s,您拥有多少家餐厅?”,所有者名称);
size=input.nextInt();
}//结束数组化()
公共字符串[]setRestaurants()
{
字符串[]restNames=新字符串[大小];
input.nextLine();//清除缓冲区
for(int row=0;row 对于(int i=0;i我想问题在于您的main方法中没有while循环。因此,nextLine()将只执行一次,而不返回扫描例程。您还可以定义一个特殊字符串,如“quit”,以指示您要退出扫描过程
试试下面的方法吧
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?");
while (!(ownerName = input.nextLine()).equals("quit")) {
Restaurant rest = new Restaurant(ownerName);
rest.arraySize();
...
}
input.close();
System.exit(0);
}//END main()
}//END Application Class ClassA
它会一直提示,直到您输入字符串“quit”。希望它能有所帮助。我想问题在于您的主方法中没有while循环。因此,nextLine()将只执行一次,而不会返回扫描例程。您还可以定义一个特殊字符串,例如“quit”指示您要退出扫描过程
试试下面的方法吧
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?");
while (!(ownerName = input.nextLine()).equals("quit")) {
Restaurant rest = new Restaurant(ownerName);
rest.arraySize();
...
}
input.close();
System.exit(0);
}//END main()
}//END Application Class ClassA
它将一直提示,直到您输入字符串“quit”。希望有帮助。您需要该方法返回的值。但是,这里您正在调用该方法,并且根据方法定义,提示您输入。
因此,您可以保存返回类型并在需要时使用它,而不是一次又一次地调用该方法。
e、 g
您可以使用这些值restName、numberOfCust、dailAvgRev来打印餐厅信息。您需要该方法返回的值。但是这里您正在调用该方法,并且根据方法定义提示输入。
因此,您可以保存返回类型并在需要时使用它,而不是一次又一次地调用该方法。
e、 g
您可以使用这些值restName、numberOfCust、dailAvgRev来打印餐厅信息。首先,我将从您的餐厅
类中删除用户输入的所有方面。这完全由您的“驱动程序”负责类。它听起来不像是一个餐厅
类应该有一个大小
字段,这将是你想要实例化的餐厅
对象的数量…基本上,再想想你的对象模型。它看起来像是一个餐厅
对象应该有一个名称、一个客户数量和一个每日收入e、 这些作为餐厅
类中的字段是有意义的,而不是传递到打印餐厅
方法中的内容。Jon-非常感谢您的反馈。我完全同意这是我在这个问题上遇到这么多麻烦的主要原因。说明特别要求我们使用此逻辑,否则我会将其更改为dra他们真的指定了这种设计吗?这是规定性的吗?我个人至少会跟进设置这种设计的人,并抱怨使用糟糕的设计设置作业是一个非常糟糕的主意。我会首先从你的餐厅
课程中删除用户输入的所有方面。这完全是你的责任“司机”类。它听起来不像是一个餐厅
类应该有一个大小
字段,这将是你想要实例化的餐厅
对象的数量…基本上,再想想你的对象模型。它看起来像是一个餐厅
对象应该有一个名称、一个客户数量和一个每日收入e、 这些作为餐厅
类中的字段是有意义的,而不是传递到打印餐厅
方法中的内容。Jon-非常感谢您的反馈。我完全同意这是我在这个问题上遇到这么多麻烦的主要原因。说明特别要求我们使用此逻辑,否则我会将其更改为dra事实上。他们真的指定了这种设计吗?这是规定性的吗?我个人至少会跟进设置这种设计的人,并抱怨使用糟糕的设计来设置任务是一个非常糟糕的主意。非常感谢!这就像魔术一样奏效。我知道我需要从数组中获取信息,而不是从方法中获取信息,但我不知道如何进行设置这样做。现在看起来很简单…非常感谢用户2044822!非常感谢!这就像魔术一样。我知道我需要从数组中获取信息,而不是从方法中获取信息,但无法找到如何获取信息。现在看起来很简单…非常感谢用户2044822!