#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 не применим для аргументов ()»