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

Java 哪个先来?字符还是字符串?,java,if-statement,char,stringbuilder,uppercase,Java,If Statement,Char,Stringbuilder,Uppercase,我在搜索答案时发现的大多数示例都嵌入在复杂的代码中。我只是想让一个问题程序知道接受两个答案(二进制?)问题的大写或小写回答,然后使用任一答案得到一个单一的结果。在我的书中找到字符类方法之前,我尝试了if/else方法,但它的示例只提供了一半的帮助 代码如下: import java.util.Scanner; public class MarriageQuiz { public static void main(String[] args) { char isMarried = 'M

我在搜索答案时发现的大多数示例都嵌入在复杂的代码中。我只是想让一个问题程序知道接受两个答案(二进制?)问题的大写或小写回答,然后使用任一答案得到一个单一的结果。在我的书中找到字符类方法之前,我尝试了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 < /Cord>原语,使用<代码>字符类来避免在.[p/>>p>中讨论的自动装箱。只需将所有输入转换为您期望的情况(上或小写,选择一个)。 尝试将一个字符转换为一个碰巧已经存在的大小写不会造成任何伤害。当您不必要地调用时,

toUppercase
方法不会抱怨。所以根本不需要测试用例

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


提示:如果运行这个代码数倍,请考虑使用<代码> char < /Cord>原语,使用<代码>字符<代码>类,以避免讨论中的自动装箱问题。

<代码> iSubase< /Calp>和<代码> ISLeLeCase根本不起作用。你的代码没有什么意义

似乎您只想比较字符,但调用了
nextLine
,它返回一个
字符串。在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!");
}

我认为您不完全理解编程是如何工作的。

isUppercase
isLowercase
根本就不是这样工作的。你的代码没有什么意义

似乎您只想比较字符,但调用了
nextLine
,它返回一个
字符串。在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!");
}

我认为您还不完全了解编程是如何工作的。

我正在考虑使用布尔值进行编程。我考虑过使用StingBuilder,但我仍然需要确定要编辑的字符串。您的问题是什么?另一件事,你的代码示例的逻辑没有意义,无法识别目的。如果我问“请输入你的婚姻状况”,我如何让程序理解“M”与“M”相同,“S”与“S”相同?然后将其用于marStat的输入?我正在考虑使用布尔值,我考虑过使用StingBuilder,但我仍然需要确定要编辑的字符串。你的问题是什么?另一件事,你的代码示例的逻辑没有意义,无法识别目的。如果我问“请输入你的婚姻状况”,我如何让程序理解“M”与“M”相同,“S”与“S”相同?然后将其用于marStat的输入?任何新的编码人员都应该记住这个“模式”--当你将用户输入与某个已知字符串进行比较时,你会在职业生涯中反复使用它。@RyanMartin???把M&S变成什么?没关系。我想你回答了我的问题。我想在我的if/else操作中使用'M'或'S',我只是不知道如何让它在任何情况下都被识别。我甚至不认为我需要它们的字符。任何新的编码人员都应该记住这个“模式”——在你的职业生涯中,每当你将用户输入与某个已知字符串进行比较时,都会反复使用它。@RyanMartin???把M&S变成什么?没关系。我想你回答了我的问题。我想在我的if/else操作中使用'M'或'S',我只是不知道如何让它在任何情况下都被识别。我认为我甚至不需要这两个字符的字符