2014-09-26 62 views
2

我想在屏幕上显示一个有两个选项的问题(你结婚了吗:y/n)。用户必须按或“y”或“n”。之后,我想在屏幕上打印“已婚”或“未婚”。如何将char转换为Java中的布尔值?

我想过在使用char来获得输入通过Scanner类(System.in)并将此char转换为布尔类型以便用if语句显示两个选项后。问题是我不知道如何将此char转换为布尔类型。是否有意义?有其他方式以不同的方式来做这个例子吗?

非常感谢

+0

无需投射。只需检查'if(ch =='y'|| ch =='Y'){...} else {...}'其中'ch'是您的'char' – pzaenger 2014-09-26 12:03:01

+0

初学者,不要使用布尔值,使用枚举 – user902383 2014-09-26 12:04:49

回答

2

是的,你试图做的方式是不做场景。你可以做如下

Scanner sc=new Scanner(System.in); 
String st=sc.nextLine(); 
if("y".equalsIgnoreCase(st)){ 
    // married 
}else if("n".equalsIgnoreCase(st)){ 
// not married 
} 
0

很简单:

boolean isYes = (inputChar=='y' || inputChar=='Y'); 

你也可以转换的char /小写,所以你不会需要||。取决于你有多少测试,如果它是值得的。

在这种情况下,那些括号并​​不是真的需要,因为||比赋值有更高的优先级,但是我个人发现,当像这样的“条件”包含在括号中时,它会更清晰。

1

我认为枚举是一个很好的方法。将规则封装在对象中。

将用户响应绑定到对象是一种视图责任。输入是下拉菜单还是文本框?

婚姻状况是一个有趣的。还有比“是/否”多口味:单身,已婚,离婚,分居,卡戴珊等

public class MaritalStatus { 
    MARRIED, NOT_MARRIED; 
} 
0

你不能简单地投charboolean,但你可以把它比作'y''n'

public static boolean charToBool(char c) { 
    // c = Character.toLowerCase(c); 
    switch (c) { 
     case 'y': 
      return true; 
     case 'n': 
      return false; 
     default: 
      throw new IllegalArgumentException("Must be either 'y' or 'n'."); 
    } 
} 
0

你不能将一个字符转换成布尔值,因为程序应该如何知道'y'表示真,'n'表示假? if语句

bool married = false; 
if(input.equalsIgnoreCase("y")) 
    married = true; 

我敢打赌,一个简单的谷歌搜索 使用会帮助你做作业。