首页 > 解决方案 > 需要帮助检查 Java 中 If/else 语句中的空格

问题描述

我是学习java的新手,我正在为我的在线课程做一个项目,目前卡在其中的一部分。

编写一个程序来检查给定变量名的正确性。更具体地说,您的程序应指定用户输入的变量名称是否为:

  • 非法(不允许有空格,必须以字母开头)
  • 合法,但风格不佳(只能使用字母或数字)
  • 好的

您不需要检查第二个单词、第三个单词等中的第一个字母是否为大写字母。

所以我的问题是,由于变量名中有空格是非法的,我需要检查用户输入的空格,如果有空格,则需要打印它是非法的。我还需要检查特殊符号(如 $%#),如果它在第一个字符之外的任何地方,让它打印它是合法但不正确的。

我觉得这非常简单,我只是想不通。

import java.util.Scanner;
public class IdentiferCheck
{
   public static void main (String[] args)
{
   Scanner in = new Scanner (System.in);
  
  String variableName = "";
  char ch = ' '; //temp holder
  
  //Get User Input
  System.out.println("This program checks the properness of a proposed Java variable name.");
  System.out.println("Please enter a variable name (q to quit):");
  variableName = in.nextLine();
  
  
  //Check if variable name is proper
  do
  {
     //Check if first char is lowercase
     ch = variableName.charAt(0);
     
     if (Character.isLetter(ch) && Character.isLowerCase(ch))
     {
     
        System.out.println("Good!");
     
     }
     
     else if (Character.isDigit(ch) && Character.isUpperCase(ch) && variableName.contains(" "))
     {
     
        System.out.println("Illegal!");
     
     }
     
     
     //Allow user to input another name or quit
     System.out.println("Enter another name or press q to quit: ");
     variableName = in.nextLine();
     
  } while (!variableName.equalsIgnoreCase("q"));
}

}

标签: java

解决方案


确保为您的任务阅读以下文档。值得注意的是,这些要求实际上并不符合 Java 变量名的实际要求。然而,这个任务最困难的部分是逻辑而不是脚本。我在下面为您编写了一个示例脚本:

后续字符可以是字母、数字、美元符号或下划线字符。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

import java.util.Scanner;

public class identifierCheck
{
public static void main(String[] args) {
    
    String input = " ";
    System.out.printf("type q to exit...\n");

    while (input.charAt(0) != 'q' && input.length() == 1) // Note the length so that you can use q for starting variable names
    {
        input = requestLine();

        if (checkValid(input))
        {
            System.out.printf("%s is legal...\n", input);
        }
    }
}

public static String requestLine()
{
    Scanner cmd = new Scanner(System.in);
    System.out.printf("Enter a variable name > ");
    return cmd.nextLine();
}

public static boolean startsWithLetter(String input)
{
    if (123 > (int)input.toLowerCase().charAt(0) && (int)input.toLowerCase().charAt(0) > 60)
    {
        return true;
    }
    else
    {
        return false;
    }
}

public static boolean containsInvalid(String input)
{
    if ((input.indexOf('$') != -1 || input.indexOf('_') != -1) && input.indexOf(' ') == -1)
    {
        System.out.printf("Using $ and/or _ in variable names is poor style...\n");
    }
    if (input.indexOf(' ') != -1) // Has a space in the string
    {
        return true;
    }
    else
    {
        return false;
    }
}

public static boolean checkValid(String input)
{
    if (!startsWithLetter(input))
    {
        System.out.printf("%s is illegal, must start with a letter (note: $ and _ are 'valid' to start variable names)...\n", input);
        return false;
    }
    else if (containsInvalid(input))
    {
        System.out.printf("%s is illegal, it must not contain spaces...\n", input);
        return false;
    }
    else
    {
        return true;
    }
}
}

祝你的课程好运!Java 是一门极好的学​​习语言。


推荐阅读