如何测试字符是否不在字符串中?(java,junit)

如何测试字符是否不在字符串中?(java,junit),java,string,junit,char,Java,String,Junit,Char,正如标题所说,我在通过junit测试时遇到了问题,这些测试用于检查字符串中是否有字符,以及如何检查空字符串中是否没有字符。以下是我的方法: public static boolean isThere(String s, char value){ for(int x = 0; x <= s.length(); x++){ if(s.charAt(x) == value){ return true; } else if(s.length() == 0){

正如标题所说,我在通过junit测试时遇到了问题,这些测试用于检查字符串中是否有字符,以及如何检查空字符串中是否没有字符。以下是我的方法:

     public static boolean isThere(String s, char value){
  for(int x = 0; x <= s.length(); x++){
   if(s.charAt(x) == value){
    return true;
   } else if(s.length() == 0){
    return false;
   }
  }
  return false;
非常感谢,请使用
String.indexOf()

public static boolean contains(String s, char value){
    return s != null && s.indexOf(value) > -1;
}

String sVal = "Jeff George";
assertTrue(contains(sVal, 'e'));
sVal = null;
assertFalse(contains(sVal, 'e'));
s.indexOf('a') == -1

你为什么这么做?您的函数已作为字符串上的方法实现。改用:

我认为Carl Manaster对您的具体问题的评论是正确的-您需要在此处使用
assertFalse
而不是
assertTrue

String sVal  = "Jeff George";
boolean notIn = StringMethods.isThere(sVal, 'b');
assertFalse(notIn); // not assertTrue

顺便说一句,
notIn
是这个变量的一个可怕的名字——它的意思与它所说的完全相反。也许这就是你困惑的原因。

你遇到了什么问题

首先,

  for(int x = 0; x <= s.length(); x++){

for(int x=0;x如果String.indexOf(char)返回-1,则hasA为false。否则为true。

对于Java 6,您只需执行以下操作即可

final String s = "This is a test";
s.contains("x"); // False
s.contains("t"); // True

或者,尝试apache commons中的StringUtils.contains()这个方法也可以为您处理空字符串大小写


更好的名称this isThere()应该是containsChar()。一些格式更好的代码和更清晰的解释,到底是什么不起作用,这将有助于我们帮助您。我想您只是想
assertFalse(notIn)
你到底想在这里实现什么?你只是在复制已经存在的功能。它应该是assertFalse,你是对的,这是我的一个输入错误,谢谢你Apache commons是一个设计和实现很差的代码cancerBesides,使用第三方库来做这些基本的事情,在我看来,这完全是愚蠢的ess.我的意思是,如果你打算在你的应用程序中塞进一个罐子,只是为了将字符串与
null
进行比较,然后在上面做一个
contains(…)
,我想知道当应用程序发布时,会有多少第三方罐子!:)+1,因为否决票看起来非常苛刻。apachecommons是一个被广泛接受和使用的库。就这一个问题来说,是不是太过分了?当然Java1.5和1.6是否使commons中的许多函数变得冗余?是的。但有两个缺陷:1)它实际上是Java1.5。2) 它不能编译。这需要一个
CharSequence
:这工作非常出色,我不可能看到这一点。如果s不等于null并且值的索引大于-1,则返回,这意味着它在那里并且字符串不是空的。非常感谢你!它应该是assertFalse,您是正确的,这是我输入的错误,谢谢
final String s = "This is a test";
s.contains("x"); // False
s.contains("t"); // True