好的,所以当我运行代码时,输入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");
}
}
}
答案 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 {
...
}