Итак, я просматривал этот кусок кода весь день, и я не вижу ошибок. Вот что я должен делать:Java - методы вызова из других классов с вычисленными полями
Создайте класс Delivery
для службы доставки. Класс содержит следующие поля:
- Номер доставки, который содержит восемь цифр. Первые четыре цифры представляют год, а последние четыре цифры представляют собой номер доставки.
- Код, представляющий область доставки. Местная доставка - код 1, а доставка на большие расстояния - код 2.
- Вес, в фунтах, предмета, который будет доставлен.
- Плата за доставку, следующим образом:
Создать конструктор для Delivery
класса, который принимает аргументы за год, номер поставки в течение года, доставка кода расстояния и веса упаковки. Конструктор определяет восьмизначный номер доставки и плату за доставку. Также включите метод , который отображает каждое поле объекта Delivery
. Сохраните файл как Delivery.java.
Затем создайте приложение, предлагающее пользователю данные для доставки. Держите запрашивая пользователя для каждого из следующих значений, пока они не действительны:
- Четырехзначное год в период с 2001 по 2025 год включительно
- Ряд поставки в течение года от 1 до 9999 включительно
- A вес пакета от 0,10 фунта до 100 фунтов включительно
- Подающего расстояние код, либо 1 или 2
Когда все записи данных достоверны, построить Delivery
, а затем отобразите его значения . Сохраните файл как CreateDelivery.java
.
Так вот моя доставка Класс
import javax.swing.*;
import java.util.*;
class Delivery
{
//variables
private int year;
private int deliveryNumber; //deliveryNo
private double weight;
private int distanceCode; //code
//constructor
//Delivery()
//{
// year = year;
// deliveryNumber = deliveryNumber;
// weight = weight;
// distanceCode = distanceCode;
//}
//get year
public int getYear()
{
return year;
}
//set year
public int setYear (int newYear)
{
year = newYear;
return year;
}
//get deliveryNumber
public int getDeliveryNumber()
{
return deliveryNumber;
}
//set deliveryNumber
public int setDeliveryNumber (int newDeliveryNumber)
{
deliveryNumber = newDeliveryNumber;
return deliveryNumber;
}
//get weight
public double getWeight()
{
return weight;
}
//set Weight
public double setWeight (double newWeight)
{
weight = newWeight;
return weight;
}
//get distanceCode
public int getDistanceCode()
{
return distanceCode;
}
//set distanceCode
public int setDistanceCode (int newDistanceCode)
{
distanceCode = newDistanceCode;
return distanceCode;
}
//calculate fee
public double displayFees(int distance, double w) //distance = c
{
double fees = 0;
if(distance == 1)
{
if(w < 5)
{
fees = 12;
}
else if((w < 20)&&(w > 5))
{
fees = 16.50;
}
else if(w > 20)
{
fees = 22;
}
}
else if(distance == 2)
{
if(w < 5)
{
fees = 35;
}
else if(w >= 5)
{
fees = 47.95;
}
}
return fees;
}
//display method
public void display(int year, int deliveryNumber, double weight, int distanceCode)
{
System.out.println("Year: " + year + '\n'
+ "Delivery Number: " + deliveryNumber + '\n'
+ "Weight of the package: " + weight + '\n'
+ "Delivery code: " + distanceCode);
}
}
А вот мой CreateDelivery Класс
import javax.swing.JOptionPane;
import java.util.Scanner;
public class CreateDelivery
{
public static void main(String []args)
{
Delivery delivery1 = new Delivery();
//scanner year
Scanner input = new Scanner(System.in);
System.out.print("Please enter the current year, format (yyyy) >>> ");
delivery1.setYear(input.nextInt());
//loop year
while((delivery1.getYear() <= 2000)||(delivery1.getYear() >= 2026))
{
System.out.println('\n'+ "Error, year should be in the range of (2010 - 2025). Please enter a valid option >> ");
delivery1.setYear(input.nextInt());
}
//scanner for delivery number
System.out.print('\n'+ "Please enter a delivery number: ");
delivery1.setDeliveryNumber(input.nextInt());
//loop for delivery number
while((delivery1.getDeliveryNumber() <= 0001)||(delivery1.getDeliveryNumber() >= 10000))
{
System.out.println("Error, the delivery number is a 4 digit number between 0001 and 9999, please enter a valid option >> ");
delivery1.setDeliveryNumber(input.nextInt());
}
//scanner for weight
System.out.print("Please enter the weight of the package (in pounds): ");
delivery1.setWeight(input.nextDouble());
//loop for weight
while((delivery1.getWeight() <= .09)||(delivery1.getWeight() >= 101))
{
System.out.println("Error, the minimum allowed weight is 0.10 pounds and the maximum is 100 pounds. Please enter a valid weight >> ");
delivery1.setWeight(input.nextDouble());
}
//scanner for delivery code
System.out.print("Please enter 1 for local or 2 for long distance deliveries >> ");
delivery1.setDistanceCode(input.nextInt());
//loop for delivery code
while((delivery1.getDistanceCode() == 1) && (delivery1.getDistanceCode() == 2))
{
System.out.println("Error, please enter a valid distance code (1 for local deliveries and 2 for long distance deliveries) >> ");
delivery1.setDistanceCode(input.nextInt());
}
//turn int to string
String n = Integer.toString(delivery1.getDeliveryNumber());
String y = Integer.toString(delivery1.getYear());
String trackingNumber = n + y;
System.out.println(delivery1.getDistanceCode() + " "
+ trackingNumber + " " + delivery1.getWeight() + " " + fees);
}
}
Так что я сделал изменения, вы, ребята, предложенные, но теперь я не могу тянуть сборы от доставки класс. Есть предположения?
С какой ошибкой вы столкнулись? –
Являются ли 'Доставка' и' CreateDelivery' в том же пакете? – Genzer
// сканер для дистанционного кода \t \t \t System.out.print («Пожалуйста, введите 1 для местных поставок и 2 для дальних перевозок >>»); \t \t \t доставка1.setDistanceCode (input.nextInt()); \t \t \t \t \t \t \t \t // петля для кода доставки \t \t \t \t \t в то время как (((delivery1.getDistanceCode() <= 1) || (delivery1.getDistanceCode()> = 2))) \t \t \t \t \t { \t \t \t \t \t \t System.out.println ("Ошибка, пожалуйста, введите код расстояния (1 для местных поставок и 2 для доставки на большие расстояния) >> "); \t \t \t \t \t \t доставка1.setDistanceCode (input.nextInt()); \t \t \t \t \t} –