首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Junit4比较String[]

使用Junit4比较String[]
EN

Stack Overflow用户
提问于 2020-01-31 02:42:10
回答 1查看 36关注 0票数 1

我正在尝试对方法执行测试:

代码语言:javascript
复制
public  String[] getFooBar(int size) {
    String[] stringsArray = new String[100];
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i <= size; i++) {
        stringBuilder.append(String.format(i + " "));
        if (i % 3 == 0) {
            stringBuilder.append(String.format("Foo"));
        }
        if (i % 5 == 0) {
            stringBuilder.append(String.format("Bar"));
        }
        stringBuilder.append(System.lineSeparator());
        stringsArray[i] = stringBuilder.toString();
    }
    return stringsArray;
}

}

我尝试在数组上使用索引,使用Array.ToString将其转换为字符串,并将其与字符串值进行比较,例如。"FooBar“。当我试图寻找一个索引时发生了什么。我从表中得到从0- 50开始的所有索引。我试过做ArrayList,但结果是一样的。有没有人教我怎么测试这个方法?

EN

回答 1

Stack Overflow用户

发布于 2020-01-31 03:01:25

这个问题的原因是,您经常附加StringBuilder,然后将每个索引设置为该附加的值。这意味着每个索引将如下所示:

代码语言:javascript
复制
index 0: 0
index 1: 0 1
index 2: 0 1 2
index 3: 0 1 2 3 foo
index 4: 0 1 2 3 foo 4
index 5: 0 1 2 3 foo 4 5 bar

我假设这是与FizzBuzz相同的概念,这意味着您很可能会遇到另一个问题:您每次都要附加索引,而不管它是3的倍数还是5的倍数。我非常确定您不希望这样。你可能想要更接近这个的东西:

代码语言:javascript
复制
public  String[] getFooBar(int size) {
    String[] stringsArray = new String[100];

    for (int i = 0; i <= size; i++) {
        StringBuilder stringBuilder = new StringBuilder();
        if (i % 3 == 0) {
            stringBuilder.append(String.format("Foo"));
        }
        if (i % 5 == 0) {
            stringBuilder.append(String.format("Bar"));
        }
        if(i % 5 != 0 && i % 3 != 0) {
            stringsArray[i] = Integer.toString(i);
        } else {
            stringsArray[i] = stringBuilder.toString();
        }
    }
    return stringsArray;
}

但实际上并不需要所有这些。你可以这样做:

代码语言:javascript
复制
public String[] getFooBar(int size) {
  String[] arr = new String[100];
  for(int i = 0; i <= size; i++) {
    String str = ""; // In situations like this the JVM turns this into a StringBuilder behind the scenes
    if(i % 3 == 0) {
      str += "Foo";
    }
    if(i % 5 == 0) {
      str += "Bar";
    }
    if(i % 3 != 0 && i % 5 != 0) {
      arr[i] = Integer.toString(i);
    } else {
      arr[i] = str;
    }
  }
  return arr;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59992522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档