【问题标题】:Using loop to fill Array with 5 given strings使用循环用 5 个给定的字符串填充数组
【发布时间】:2020-03-31 11:04:14
【问题描述】:

我正在寻找一种在测试函数中给出数组长度时填充字符串数组的方法。例如,当 test 给出长度 100 时,我希望这 5 个字符串值在循环中整个数组中打印,以便打印到最后。到目前为止,我设法用前 5 个填充数组,但是,我找不到循环它的方法,并且当给出更高的数组长度时测试失败。感谢您的帮助!

public class Sid {
    public static String howMuchILoveYou(int nb_petals) {

        String Petals[]=new String[7];
        Petals[0]="zero index"; //cannot skip this for some reason
        Petals[1]="I love you";
        Petals[2]="a little";
        Petals[3]="a lot";
        Petals[4]="passionately";
        Petals[5]="madly";
        Petals[6]="not at all";


        return Petals[nb_petals].toString();
    }
}

测试

import static org.junit.Assert.assertEquals;
import java.util.Random;
import org.junit.Test;

public class SampleTest {
    @Test
    public void test1() {
        assertEquals("I love you", Sid.howMuchILoveYou(1));
        assertEquals("a little", Sid.howMuchILoveYou(2));
        assertEquals("not at all", Sid.howMuchILoveYou(6));
        assertEquals("I love you", Sid.howMuchILoveYou(343));    //THIS ONE FAILS
    }
}

【问题讨论】:

  • return Petals[(nb_petals - 1) % 6 + 1];? (反正你不需要.toString())。
  • 谢谢先生!这就像一个魅力。请你给我简要解释一下这是如何解决的 - 为什么 (nb_petals - 1) 以及 "% 6 + 1" 代表什么?或者我什么时候可以在 java 文档中找到这些东西?

标签: java arrays loops testing


【解决方案1】:

无法评论,所以在这里写... 据我了解,您是在尝试循环执行数组。

 assertEquals("I love you", Sid.howMuchILoveYou(343));    //This will go outOfIndexBound

您在方法中的 return 语句返回数组索引值,因为您已经声明了大小为 7 的数组。


 return Petals[nb_petals].toString();

您可以使用 % 运算符循环数组


return Petals[(nb_petals - 1) % 6 + 1];

【讨论】:

  • 谢谢!这对我有用。能否请您指导我一些 java 文档,在那里我可以了解 % 运算符?不知何故,我找不到任何专门针对这个 % 运算符的东西。谢谢!
  • % 运算符返回表达式的其余部分。您可以在cprogramming.com/tutorial/modulus.html 上阅读更多相关信息
  • @backdoor 你应该解释为什么-1,为什么%,为什么6,为什么+1。
猜你喜欢
  • 2022-12-10
  • 2020-10-13
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多