Трудности при использовании нескольких классов

#java #eclipse #class

Вопрос:

Поэтому в настоящее время я изо всех сил пытаюсь создать одну конкретную программу в eclipse для выполнения задания, в то время как я могу выполнить большую часть программы, я, похоже, борюсь с частью программы без аргументов, а также на короткое время переношу части первого класса во второй. Вот мой код для первого класса

 // Preparation of the input import java.util.Scanner;  public class primarySetUp {  public static void main(String[] args) {  // Variable Declaration  double userBagNumber;  double userBagWeight;    // Create Scanner  Scanner input = new Scanner(System.in);  java.util.Date date = new java.util.Date();    // Opening Statement  System.out.println("Welcome to the Coffee Sales Simulation!");    // Get User Input  System.out.println("How heavy do you want the bags to be?");  userBagWeight = input.nextDouble();  System.out.println("How many bags do you want?");  userBagNumber = input.nextDouble();    // Get output  // Date  System.out.println("Todays date: ");  System.out.printf("%tB %lt;te, %lt;tY", date);  System.out.println(""); // spacer  // Original Inputs  System.out.printf("nNumber of Bags: %3.0f", userBagNumber);  System.out.printf("nWeight of Each Bag: %3.2f", userBagWeight);  System.out.print(" lbs");    // Calling of the Class  secondarySetUp mysecondarySetUp = new secondarySetUp(userBagWeight, userBagNumber);    // End Program  System.out.println("nThank you for shopping with us!"); }  }  

а вот мой код для второго класса, который в данном случае полон ошибок.

 public class secondarySetUp {    // Constants  static double pricePerPound = 5.99;  static double taxRate = 0.0725;    int singleBagger, pounderBagger;  public secondarySetUp(double userBagWeight, double userBagNumber) {          // A method named getTaxRate() that returns the tax rate.     System.out.printf("nPrice per Pound: $%2.2f", getPrice());  System.out.printf("nSales Tax: $%2.2f", getTaxRate());  System.out.print(" %");  System.out.printf("nPrice of one bag weighing one pound: %3.2f", getSale());    }  // No argument pricing  public Sale() {  singleBagger = 1;  pounderBagger = 1;  }  // First constructor receiving No argument pricing  public Sale(int w, int n) {  singleBagger = w;  pounderBagger = n;  }  // Sale without tax  public double getSale() {  return userBagWeight * singleBagger * pounderBagger;  }  // Get Sale Tax  public double getSaleTax() {  return (getSale() * taxRate);  }  // Get total pricing  public double getTotalPrice() {  return (getSale()   getSaleTax());  }  public double getPrice() {  return pricePerPound;  }  public double getTaxRate() {  return taxRate * 100;  } }  

Если у вас есть какие-либо исправления, которые я мог бы применить, пожалуйста, дайте мне знать; Я также планирую добавить операторы печати для остальных аргументов, но сначала я хотел бы исправить Sale ().

Ответ №1:

Я вижу проблему в getSale() том , где вы пытаетесь использовать userBagWeight , но эта переменная не существует вне параметров конструктора, что может создать много проблем, поскольку другие methods обращаются к ней. Конструктор принимает double userBagWeight, double userBagNumber , но он не присваивает их каким-либо полям и ничего с ними не делает.

Я пропустил ту часть , где вы обращаетесь Sale() как constructor с «а», но это не constructors так . Он назван в constructor честь имени вашего класса.

 public secondarySetUp(double userBagWeight, double userBagNumber)  

переоденься Sale() secondarySetUp , и все будет хорошо.

вот как должен выглядеть ваш класс :

 public class secondarySetUp {  // Constants static double pricePerPound = 5.99; static double taxRate = 0.0725;  int singleBagger, pounderBagger; double userBagWeight, userBagNumber; public secondarySetUp(double userBagWeight, double userBagNumber) {  this.userBagWeight = userBagWeight;  this.userBagNumber = userBagNumber;   singleBagger = 1;  pounderBagger = 1;       // A method named getTaxRate() that returns the tax rate.     System.out.printf("nPrice per Pound: $%2.2f", getPrice());  System.out.printf("nSales Tax: $%2.2f", getTaxRate());  System.out.print(" %");  System.out.printf("nPrice of one bag weighing one pound: %3.2f", getSale());   } // First constructor receiving No argument pricing public secondarySetUp(int w, int n) {  singleBagger = w;  pounderBagger = n;  } // Sale without tax public double getSale() {  return userBagWeight * singleBagger * pounderBagger; } // Get Sale Tax public double getSaleTax() {  return (getSale() * taxRate); } // Get total pricing public double getTotalPrice() {  return (getSale()   getSaleTax()); } public double getPrice() {  return pricePerPound; } public double getTaxRate() {  return taxRate * 100; }  

}

this это ключевое слово, чтобы сообщить программе, что мы хотим использовать поле «переменная экземпляра», если у нас есть метод parameter , имя которого совпадает с именем поля, затем, чтобы отличить их друг от друга, мы сообщаем программе this.fieldName , о каком из них мы говорим.

Комментарии:

1. Итак, что я могу сделать в этом случае? Я попытался перенести их в класс, в который они включены, но это приводит к ошибке. Что я мог бы добавить или изменить, чтобы сделать его более жизнеспособным?

2. вам нужно назначить им поля, если вы хотите использовать их в других методах, помимо конструктора. ниже ваши константы создают для них поле double userBagWeight; , и в конструкторе вы делаете что-то вроде этого : public secondarySetUp(double userBagWeight, double userBagNumber) { this.userBagWeight = userBagWeight;

3. Это просто выдает мне ошибку, в которой говорится, что «Вес пользователя не может быть разрешен или не является полем». Кроме того, функция Sale() ни в малейшей степени не хочет функционировать, где указано, что метод возвращаемого типа отсутствует. Что я могу сделать для устранения этих ошибок?

4. проверьте правку в ответе

5. Я все еще пытаюсь понять, почему мои ошибки выглядят так, и я до сих пор не нашел, куда я должен поместить это утверждение, вот мой код для новой продажи() ‘ публичная двойная продажа(двойной вес пользователя) { возвращаемый вес пользователя * одноместный * фунтовый мешок;} «Появляются такие ошибки, как» Метод getSale(двойной) в типе secondarySetUp не применим для аргументов ()»