哪个先来?字符还是字符串?

Which comes first? The char or the String?

我在搜索答案时找到的大多数示例都嵌入在复杂的代码中。我只是想让一个问题程序知道接受对双答案(二进制?)问题的大写或小写回答,然后使用任一答案继续得出单一结果。在我的书中找到字符 class 方法之前,我尝试了一种 if/else 方法,但它只帮助了它的示例。

代码如下:

 import java.util.Scanner;
public class MarriageQuiz
{
public static void main(String[] args)
{   
  char isMarried = 'M';
  char isSingle = 'S';
  String marStat;

  System.out.print("Please enter your Marital Status (M or S) >> ");
  marStat = input.nextLine();

     if(marStat.isUppercase(isMarried | isSingle))
     {
        marStat = input.nextLine();
     }
     else if((marStat.isLowercase(isMarried | isSingle)))
     {
        marStat = marStat.toUpperCase(isMarried | isSingle);
     }
     System.out.print("You are " + marStat);
}
} 

只需将所有输入转换为您期望的大小写(大写或小写,由您选择)。

尝试将角色转换为恰好已经存在的一种情况没有任何坏处。 toUppercase 方法在您不必要地调用它时不会报错。所以根本不需要测试大小写。

marStat = marStat.toUppercase() ;
if ( marStat.equals( 'S' ) {
    … do Single stuff
} else if ( marStat.equals( 'M' ) {
    … do Married stuff
} else {
    … handle unexpected input
}

提示:如果 运行 此代码无数次,请考虑将 char 原语的使用替换为 Character class 以避免 class 中讨论的自动装箱=14=].

isUppercaseisLowercase 根本不是那样工作的。而且您的代码毫无意义。

看起来你只想比较字符,但是你调用了 nextLine which returns a String。在 if 语句中,您又以某种方式要求用户输入 。我真的不知道你在这里做什么。

我猜你想要这样的东西:

char isMarried = 'M';
char isSingle = 'S';
char marStat;

System.out.print("Please enter your Marital Status (M or S) >> ");
marStat = input.nextLine().charAt(0);

if(marStat == 's' || marStat == 'S')
{
   System.out.println("You are single!");
}
else if(marStat == 'm' || marStat == 'M')
{
   System.out.println("You are married!");
}

我认为您没有完全理解编程的工作原理。