import java.util.Scanner;
public class CreatePurchase {
public static Purchase item;
public static Scanner details;
public static void main(String[] args) {
details = new Scanner(System.in);
item = new Purchase();
int invoice = details.nextInt();
boolean invoiceRange = ((invoice >= 1000) && (invoice <= 8000));
while (!invoiceRange)
{
invoice = details.nextInt();
}
item.setInvoice(invoice);
double sale = details.nextDouble();
if (sale >= 0)
{
item.setSale(sale);
}
item.display();
}
}
При запуске этого кода не появляются синтаксические или семантические ошибки. Если вы введете правильные значения для invoice
и sale
, он будет работать без проблем. Проблема, с которой я сталкиваюсь, кажется логичной, и я действительно не понимаю, почему. После прохождения первого цикла цикла он продолжает запрашивать, чтобы я вводил значения, как будто он больше не проходит через контрольную фазу, что вызывает бесконечный цикл.Какие проблемы возникают при создании полей статических объектов?
Я не думаю, что логическая логика ошибочна, потому что она работает при предоставлении правильных значений, но я думал, что должен попросить здесь, прежде чем что-либо предпринять.
Я думаю, что это имеет какое-то отношение ко мне, объявляя мои объекты статическими полями. Я хотел сделать класс Purchase
частью класса CreatePurchase
, сделав его полем. Java не позволит мне получить к нему доступ, не создавая экземпляр класса CreatePurchase
, который, я думаю, рекурсивный и вызовет переполнение стека. Заставляя их работать статично, но я думаю, что поля либо перестают получать значения после первого ввода, либо логическая логика просто ошибочна.
Этот вопрос исходит из того же задания, что и на вопрос Java use of static fields.
Ваше логическое условие '(! InvoceRange)' никогда не изменяется в цикле, поэтому оно бесконечно. –
Ваш заголовок вопроса вводит в заблуждение - объекты не являются ни статическими, ни экземплярами - они просто * являются *. *** Переменные ***, с другой стороны, могут быть объявлены статическими или не объявленными статическими (так называемые * экземпляры * переменные), а на тот же объект могут ссылаться как статические, так и поле экземпляра. –
Не так много смысла делать эти объекты в статических полях, если они доступны только из метода 'main'. – 4castle