如何在if,嵌套if,else语句中使用具有两个含义的布尔值

时间:2016-07-01 03:36:04

标签: java

好的,所以当我运行代码时,输​​入no或者任何错误之后,我的程序不会跳转到底部的Else语句(嵌套的if_Else语句之外)我在做什么错误?我尝试用else启动它if if(yes!= true)或Else(!yes),我的意思是你命名它,包括更改初始参数和imputing(yes == true ^ no == true)但是,定义另一个布尔变量否,并设置为true!

import java.util.Scanner;
public class Flights
{
    public static void main(String args[]){
    String txt;
    boolean yes=true;

    Scanner type=new Scanner(System.in);
    int days;

    System.out.println("Is this a round trip? ");
    txt=type.next();

        if(yes==true){
            System.out.println("How many days in advance do you plan to book your flight?: ");
            days=type.nextInt(); 
            if(days>180)        
                System.out.println("Error: Flights can't be booked for more than 180 days out");    

            else if( days<=180 && days>=14)
                System.out.println("Your flight cost is: $275");

            else if(days<14 && days>=7)
                System.out.println(" Your flight cost is: $320");

            else if(days<7)
                System.out.println("Your flight cost is: $440");
                     }
        else
           {
                System.out.println("Enter your discount code");

           }                


    }
}

2 个答案:

答案 0 :(得分:1)

好吧,你将yes变量发送到true,并且在你开始条件语句之前没有更新它,你将yes的值与{{1}进行比较}。这就是问题所在。

这是你开始的地方:

true

然后你等待用户输入,但是不要更新boolean yes=true; 值,而是继续这样检查。

yes

这导致永远不会达到else语句。

你可以做的是,按照这一行:

if(yes==true){
}

您可以更新txt=type.next(); 变量的值,如下所示:

yes

希望这有帮助。

答案 1 :(得分:1)

要让您的程序根据用户输入做出决定,您必须查看public class ExtendedSelectListItem : SelectListItem { public Object htmlAttributes { get; set; } } public class CustomHtmlHelper { // taken from stackoverflow.com/a/7772354: requires by HTML helper to get model state public static Object GetModelStateValue(HtmlHelper helper, String key, Type destinationType) { ModelState state; if (helper.ViewData.ModelState.TryGetValue(key, out state)) { if (state.Value != null) { return state.Value.ConvertTo(destinationType, CultureInfo.InvariantCulture); } } return null; } // this part inspired from stackoverflow.com/a/7537628 public static MvcHtmlString DropDownListForId<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, IEnumerable<ExtendedSelectListItem> selectList, String optionLabel, Object htmlAttributes = null) { String name = ExpressionHelper.GetExpressionText(expression); String fullName = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); if (String.IsNullOrEmpty(fullName)) { throw new ArgumentException("Name is undefined"); } if (selectList == null) { throw new ArgumentException("Select list is empty"); } Object defaultValue = GetModelStateValue(helper, fullName, typeof(String)); if (defaultValue == null) { defaultValue = helper.ViewData.Eval(fullName); } else { var defaultValues = new[] { defaultValue }; IEnumerable<String> listvalues = (from value in defaultValues select value.ToString(); var selectedValues = new HashSet<String>(listvalues, StringComparer.OrdinalIgnoreCase); var newSelectList = new List<ExtendedSelectListItem>(); foreach (ExtendedSelectListItem item in selectList) { item.Selected = (item.Value != null) ? selectedValues.Contains(item.Value) : selectedValues.Contains(item.Text); newSelectList.Add(item); } selectList = newSelectList; } var listItems = new StringBuilder(); foreach (ExtendedSelectListItem item in selectList) { listItems.Append(ListItemToOption(item)); } var tagBuilder = new TagBuilder("select") { InnerHtml = listItems.ToString() }; tagBuilder.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); tagBuilder.MergeAttribute("name", fullName, true); tagBuilder.GenerateId(fullName); ModelState state; if (helper.ViewData.ModelState.TryGetValue(fullName, out state)) { if (state.Errors.Count > 0) { tagBuilder.AddCssClass(HtmlHelper.ValidationInputCssClassName); } } tagBuilder.MergeAttributes(helper.GetUnobtrusiveValidationAttributes(name)); return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal)); } public static String ListItemToOption(ExtendedSelectListItem item) { var builder = new TagBuilder("option") { InnerHtml = HttpUtility.HtmlEncode(item.Text) }; if (item.Value != null) { builder.Attributes["value"] = item.Value; builder.Attributes["id"] = item.Value; } if (item.Selected) { builder.Attributes["selected"] = "selected"; } builder.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(item.htmlAttributes)); return builder.ToString(TagRenderMode.Normal); } } 的值。

将您的代码更改为以下内容:

txt

甚至更短:

yes = txt.equalsIgnoreCase("yes");
if (yes == true) {
    ...
} else {
    ...
}