У меня возникли проблемы с проверкой логического значения для класса композиции, который содержит несколько логических полей. Если это правда, оператор строки печати будет печататься, но я не уверен, что логическое значение не обнаруживается, что оно было инициализировано при создании объекта в драйвере, или что-то не так с logi c моего кода.
Я все еще изучаю Java и извиняюсь, если у меня довольно много неэффективных вариантов кода, но по большей части программа работает, я просто не могу распечатать Burger rollType после изменяется соответствующий логический тип rolltype. Я даже не уверен, что логическое значение для типа рулона проверяется или правильно устанавливается.
В настоящее время я использую getBreadRoll (). Iswhateverrolltype (), чтобы получить тип рулона из составного класса BreadRoll а затем передать его в логическую переменную соответствующего типа rolltype, затем проверить в условном выражении, чтобы установить строковую переменную rollType на тип ролика, а затем использовать в строке для печати.
Вот код.
Это метод дополнений, который распечатывает выбранные части бургера и цену за единицу.
public String additions() {
String additions = "The "+getClass().getSimpleName()+" you made consists of a \n";
boolean isWhiteCH = getBreadRoll().isWhiteRoll();
boolean isWheatCH = getBreadRoll().isWheatRoll();
boolean isBrownRyeCH = getBreadRoll().isBrownRyeRoll();
String rollType="";
if(isWhiteCH){
rollType = "White Roll";
}
else if(isWheatCH){
rollType = "Wheat Roll";
}
else if(isBrownRyeCH){
rollType = "Brown Rye Roll";
}
boolean isBreadRollCH=getBreadRoll().isBrownRyeRoll() || getBreadRoll().isWheatRoll() || getBreadRoll().isWhiteRoll();
boolean isMeatCH=isMeat();
boolean isLettuceCH=isLettuce();
boolean isTomatoCH=isTomato();
boolean isCarrotCH=isCarrot();
for(int i=0; i < getCount(); i++){
if(isWhiteCH){
additions += " "+rollType+" at $"+getFbreadRollPrice()+ ", \n";
isWhiteCH = false;
continue;
}else if(isWheatCH){
additions += rollType+" at $"+getFbreadRollPrice()+ ", \n";
isWheatCH = false;
continue;
}else if(isBrownRyeCH){
additions += rollType+" at $"+getFbreadRollPrice()+ ", \n";
isBrownRyeCH = false;
continue;
}
else if(isMeatCH){
additions +="Meat patty at $"+getFmeatPrice()+ ", \n";
isMeatCH = false;
continue;
}
else if(isLettuceCH){
additions +="a piece of lettuce at $"+getFlettucePrice()+", \n";
isLettuceCH = false;
continue;
}
else if(isTomatoCH){
additions +="a tomato at $"+getFtomatoPrice()+", \n";
isTomatoCH = false;
continue;
}
else if(isCarrotCH){
additions +="some carrots at $"+getFcarrotPrice()+", \n";
isCarrotCH = false;
continue;
}
}//end for loop
return additions + "And the final total for the "+getClass().getSimpleName()+" \n" +
"is $"+getPrice()+".";
}//end additions Method
Вот составной класс BreadRoll, содержащий поля, которые я пытаюсь проверить . Это не дочерний элемент какого-либо из классов, а объект класса BreadRoll, который используется как поле в других классах.
public class BreadRoll {
private boolean whiteRoll;
private boolean wheatRoll;
private boolean brownRyeRoll;
public BreadRoll(boolean whiteRoll, boolean wheatRoll, boolean brownRyeRoll) {
if(wheatRoll){
this.whiteRoll = whiteRoll;
this.wheatRoll = false;
this.brownRyeRoll = false;
}else if(wheatRoll){
this.whiteRoll = false;
this.wheatRoll = wheatRoll;
this.brownRyeRoll = false;
}else if(brownRyeRoll){
this.whiteRoll = false;
this.wheatRoll = false;
this.brownRyeRoll = brownRyeRoll;
}
}//end constructor
Вот поля, которые я ввожу для драйвера и результат.
public static void main(String[] args) {
Hamburger JaysHam = new Hamburger(new BreadRoll(true, false, false),
true, true, false, false);
System.out.println(JaysHam.getPrice());
System.out.println(JaysHam.additions());
Вот результат.
5.29
The Burger you made consists of a
Meat patty at $1.50,
a piece of lettuce at $0.50,
And the final total for the Hamburger
is $5.29.
After the String 'Бургер, который вы сделали, состоит из' типа Roll должен быть напечатан вместе с ценой.