【问题标题】:Which comes first? The char or the String? [closed]哪个先出现?字符还是字符串? [关闭]
【发布时间】:2016-12-27 07:19:06
【问题描述】:

我在寻找答案时发现的大多数示例都嵌入在复杂的代码中。我只是想让一个问题程序知道接受对两个答案(二进制?)问题的大写或小写响应,然后使用任一答案来处理单个结果。在我的书中找到字符类方法之前,我尝试了 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);
}
} 

【问题讨论】:

  • 我正在考虑使用布尔值来处理这个
  • 我考虑过使用 StingBuilder,但我仍然需要识别要编辑的字符串。
  • 您的问题到底是什么?还有一点,你的代码示例的逻辑没有意义,无法辨别目的。
  • 如果我问“请输入您的婚姻状况”,我如何让程序理解“M”与“m”相同,“S”与“s”相同?然后将其用于 marStat 的输入?

标签: java if-statement char stringbuilder uppercase


【解决方案1】:

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

尝试将字符转换为恰好已经在这种情况下的一种情况并没有什么坏处。 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 类以避免the Oracle Tutorial 中讨论的自动装箱。

【讨论】:

  • 任何新的编码员最好记住这个“模式”——当你将用户输入与某个已知字符串进行比较时,你会在你的职业生涯中一遍又一遍地使用它。
  • @RyanMartin ???把M&S做成什么?
  • 没关系。我想你回答了我的问题。我想在我的 if/else 操作中使用“M”或“S”我只是不知道如何让它被识别,无论大小写。
  • 我认为我什至不需要任何一个的字符
【解决方案2】:

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

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

我认为您并不完全了解编程的工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多