【问题标题】:check if array is just one letter检查数组是否只是一个字母
【发布时间】:2019-05-06 12:12:54
【问题描述】:

我想检查输入是只有1个字母还是多于1个, 下面是我的代码

public ResponseEntity<String> moReceiver(@RequestParam("data")String data)
String[]subKeyword=data.split(" ");
String subKwd=subKeyword[1];
    if(subKwd =="")
    {
     System.out.println("One letter"); 
    }
    else
    {
     System.out.println("More than One letter"); 
    }

尝试使用

==""

但不起作用.. :( ,并得到了这个错误 --->索引 1 超出长度 1 的范围

【问题讨论】:

  • 你需要从0算起。
  • Array "out of bounds"的可能重复
  • @NajibRazak 不是,你怎么想?您在链接的帖子中已经很好地解释了它如何与索引一起使用,请阅读它,谢谢:)。 I assume you got as input array just one item, so length is 1 , but the last - and only valid- index is 0(跨编程语言的通用索引,只有少数索引从 1 开始),所以如果你访问arr[1],你会得到数组越界异常..顺便说一句,永远不要使用== 进行字符串比较, .equals() 是更好的选择
  • 喜欢一个实际的字母还是“一个字母”这个词?

标签: java split


【解决方案1】:

数组索引是从零开始的,字符串比较应该使用'equals'。

String subKwd = subKeyword[0];
if(subKwd.equals("")){
  System.out.println("Zero letters");
}

或者你也可以检查字符串的大小:

if(subKwd.length() == 0){
  System.out.println("Zero letters");
} else if(subKwd.length() == 1){
  System.out.println("One letter");
} else {
  System.out.println("More letters");
}

如果您依赖关键字确实是数据中的第二个“字段”这一事实,则需要添加额外检查以查看您的数据是否确实包含至少 2 个字段:

String[] subKeyword = data.split(" ");
if(subKeyword.length > 1){
  String subKwd = subKeyword[1];
  if(subKwd.length() == 0){
    System.out.println("Zero letters");
  } else if(subKwd.length() == 1){
    System.out.println("One letter");
  } else {
    System.out.println("More letters");
  }
} else {
  System.out.println("No subkeyword present in data");
}

【讨论】:

  • 不起作用,因为当 (String subKwd=subKeyword[1] ) -> 没有子关键字时,它返回索引 1 超出长度 1
  • 好的,如果您依赖数据中的第二个“字段”,您首先需要检查您的数组是否包含至少 2 个字段。在这种情况下,在其余部分添加一个 if(subKeyword.length > 1) 测试......我会更新我的答案。
【解决方案2】:

通常您不想将 == 与字符串一起使用。您应该使用 equals 方法。此外,还有一个名为 length() 的函数可以用于字符串。

public ResponseEntity<String> moReceiver(@RequestParam("data")String data)
if (data != null){
    if(data.length() == 1)
    {
        System.out.println("One letter"); 
    }
    else
    {
        System.out.println("More than One letter"); 
    }
}

这应该适用于您想要实现的目标

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多