【问题标题】:Simple Program to check whether input String is a keyword or not (keywords are specified)检查输入字符串是否为关键字的简单程序(指定关键字)
【发布时间】:2020-10-20 13:33:17
【问题描述】:

这是我正在尝试执行的代码,但无论输入是什么,我都会得到相同的结果,即“ 不是关键字”。

这里是关键字列表:{break, case, continue, default, defer, else, for, func, goto, if, map, range, return, struct, type, var}

如果我的输入字符串出现在关键字列表中,我想打印 " is a keyword"; else print " 不是关键字".

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package word.is.key;

/**
 *
 * @author JagritSharma
 */
import java.util.*;
public class WordIsKey {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input= new Scanner(System.in);
        String s= "break, case, continue, default, defer, else, for, func, goto, if, map, range, return, struct, type, var";
        String[] keywords= s.split(",", 16);
        String n= input.nextLine();
        String res= n+" is not a keyword";
        for(int i=0;i<keywords.length;i++){
            if(keywords[i].equals(n)){
                res= n+" is a keyword";
                break;
            }
        }
        System.out.println(res);
    }
    
}

【问题讨论】:

  • 尝试拆分", " 而不是","。 Python不会自动删除空格,你必须自己做。
  • 您还可以使用 trim() 函数删除开头和结尾的空格。一个简单的keywords[i].trim().equals(n) 应该可以让您的代码按预期工作

标签: java if-statement


【解决方案1】:

问题是,当您将"break, case" 拆分为"," 时,您将得到字符串"break"" case"。因此,您的代码仅适用于第一个关键字 break,因为所有其他关键字都有额外的空间。
您需要拆分 ", " 或选择另一种方法来删除多余的空间,然后再将它们与您的输入进行比较,即 keywords[i].trim().equals(n)

【讨论】:

    【解决方案2】:

    您需要做的就是从输入的关键字字符串中删除空格,即将其设为“default,case,break”而不是“default,case,break”。

    当您将字符串拆分为数组时,它会以逗号拆分并将下一个元素之前的前一个空格附加到元素本身。因此,您的“案例”被视为“案例”。

    【讨论】:

      【解决方案3】:

      与其尝试将关键字列表的字符串表示形式转换为关键字数组,不如直接初始化关键字数组:

          String[] keywords= {
              "break", "case", "continue", "default",
              "defer", "else", "for", "func", "goto", 
              "if", "map", "range", "return", "struct", 
              "type", "var"};
      

      【讨论】:

      • 问题中给出了字符串?
      【解决方案4】:

      除了上述之外,只需使用:

      javax.lang.model.SourceVersion.isName( keyWord );
      

      这样,您将始终拥有您正在使用的版本的最新关键字列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        相关资源
        最近更新 更多