У меня есть класс сборщика, который выбирает ваш наряд для вас, в зависимости от того, почему вы выходите из дома и какой это день.
Я пытаюсь завершить sh метод выбора, который решает, какие предметы одежды назначать для каждого индекса ArrayList. Одежда - это собственный класс, который имеет бренд String, цвет String и логические формальные поля.
В методе выбора я пытаюсь сделать
outfit.add(jeans);
, но он дает мне нулевой указатель исключение, которого не должно быть, потому что я определяю джинсы в конструкторе, поэтому я попытался сделать
outfit.add (picker.jeans);
, и он выдает ошибку «non stati *» 1036 * поле 'джинсы' нельзя ссылать из состояния c контекста "
В этом методе использовались булевы переменные stati c, поэтому я попытался исправить его, превратив
public class picker {
static boolean formalEvent;
static boolean niceWeather;
static boolean specialDay;
static boolean workingOut;
в
public class picker {
boolean formalEvent;
boolean niceWeather;
boolean specialDay;
boolean workingOut;
но это все еще не работает, и я, возможно, не должен был иметь эти состояния c, во-первых, но это заставило мой основной метод работать, где я определяю их на основе Пользователь вводил в сканер, что я тоже сделал стати c. Мой учитель сказал использовать stati c там, где вам не нужно многократное его использование. Мне нужен только один сканер.
Начало моего кода до конструктора выглядит следующим образом, я мог бы позже заставить конструктора спросить, какие штаны, спортивные штаны, рубашка и т. Д. c у пользователя, так что не всегда один определенный гардероб.
import java.util.ArrayList;
import java.util.Scanner;
public class picker {
boolean formalEvent;
boolean niceWeather;
boolean specialDay;
boolean workingOut;
ArrayList<clothing> outfit = new ArrayList<>();
static Scanner scnr = new Scanner(System.in);
clothing khakis;
clothing jeans;
clothing shorts;
clothing sweatpants;
clothing sweatshirt;
clothing gymShirt;
clothing workShirt;
clothing designerShirt;
/**
* Picker constructor.
*/
public picker() {
clothing khakis = new clothing("Levi", "brown", true);
clothing jeans = new clothing("Mike Amiri", "blue", false);
clothing shorts = new clothing("Nike", "blue", false);
clothing sweatpants = new clothing("Adidas", "black", false);
clothing sweatshirt = new clothing("Old navy", "red", false);
clothing gymShirt = new clothing("Nike", "grey", false);
clothing graphicTee = new clothing("Mike's Paving Posse", "black", false);
clothing workShirt = new clothing("Polo", "yellow", true);
clothing designerShirt = new clothing("Supreme", "red", false);
}
Начало моего основного метода выглядит следующим образом
public static void main(String[] args) {
picker todaysFit = new picker();
String response = "";
System.out.println("Are you going to a formal event?");
response = scnr.next();
if (response.equalsIgnoreCase("yes")) {
formalEvent = true;
и теперь
formalEvent = true;
получает ошибку при FormalEvent, говоря: «Нестатистическое c поле« formalEvent »нельзя ссылаться из статического c контекста». Я попытался сделать это
picker.formalEvent = true;
, чтобы исправить это, но все равно выдает ту же ошибку.