我正在寻找一种运行“for”循环的方法,该循环将以用户定义的值“d”(1到7之间)开始,并连续加1,直到达到其他用户定义的值“n”。这就是问题......一旦达到值“7”,我需要它将计数重复回“1”而不会陷入无限循环。
例如,我的程序提示用户输入2个数字,并将它们分别存储为“d”和“n”。第一个数字可以是“1-7”,第二个数字可以是任何数字。因此,如果用户输入“5”和“10”,我需要我的循环开始在“6”计数并向上计数“10”次,一旦值达到“7”则从“1”开始。看起来应该是...... “6 7 1 2 3 4 5 6 7 1”。
现在我看起来像这样...... “6 7 8 9 10 11 12 13 14 15”
这是我当前的代码和输出“5 = d”和“10 = n”
代码
public void incrementDay3()
{
int i;
for(i = (d + 1);i <= (d + n);i++)
{
System.out.print(i);
}
}
输出
“6789101112131415”
非常感谢任何帮助!
答案 0 :(得分:8)
试试这个(模运算符):
public void incrementDay3()
{
int i;
for(i = d ; i < (d + n) ; i++)
{
System.out.print((i % 7) + 1);
}
}
有关模数的详细信息,请查看此wikipedia article
答案 1 :(得分:0)
public void incrementDay3()
{
int i;
int d = 5, n = 10;
int result;
result = d + 1;
for(i = result;i <= (d + n);i++)
{
result++;
if(result > 7)
result = 1;
System.out.print(result);
}
}
答案 2 :(得分:0)
我发现这个变体更容易阅读。特别是,“简单的for循环,只计入n
”是可以立即识别的,并且比当前最佳答案中的循环条件更容易解析。
public static void incrementMod7(int d, int n) {
for (int i=0; i<n; i++) {
d = (d%7) + 1;
System.err.print(d + " ");
}
}
答案 3 :(得分:0)
int d=5;
for (int i = 0; i < 10; i++) {
d =(d==7)?1:d+1;
System.out.println(d);
}
容易。