Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不重新提示的情况下将从其他类接收的数组放入方法时遇到问题_Java_Arrays_Class_Object_Methods - Fatal编程技术网

Java 在不重新提示的情况下将从其他类接收的数组放入方法时遇到问题

Java 在不重新提示的情况下将从其他类接收的数组放入方法时遇到问题,java,arrays,class,object,methods,Java,Arrays,Class,Object,Methods,这个问题真的很难解决。我试图寻找类似的情况,但似乎找不到任何有帮助的。我觉得我已经掌握了99%的方法,这可能是非常简单的事情,但我一辈子都搞不清楚 我有两节课。一流餐厅 问题是,在我对ClassA主方法中printRestaurant()的方法调用中,一些方法需要接收带有餐厅名称的数组,但当我使用这些方法时,每次点击下一个方法时,它都会对餐厅名称重新进行提示,而不是只提示一次,然后再执行下一个方法 A类: import java.util.Scanner; public class ClassA

这个问题真的很难解决。我试图寻找类似的情况,但似乎找不到任何有帮助的。我觉得我已经掌握了99%的方法,这可能是非常简单的事情,但我一辈子都搞不清楚

我有两节课。一流餐厅

问题是,在我对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
公共级餐厅
{
//田地
字符串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!