Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中以5块为单位打印int序列_Java - Fatal编程技术网

如何在Java中以5块为单位打印int序列

如何在Java中以5块为单位打印int序列,java,Java,我一直在做Java练习,非常感谢您的指导 我必须输入两个数字(第一个介于100和150之间,第二个介于10和50之间),然后每隔五个数字打印出中间的数字 例如,如果我输入130和49,我需要打印出: 129 128 127 126 125 124 123 122 121 120 119 我已经能够进行数字验证,并在一行中显示它们之间的数字,但我不知道如何每隔五个数字构建换行符 这是我的密码: import java.util.Scanner; public static void main(S

我一直在做Java练习,非常感谢您的指导

我必须输入两个数字(第一个介于100和150之间,第二个介于10和50之间),然后每隔五个数字打印出中间的数字

例如,如果我输入130和49,我需要打印出: 129 128 127 126 125 124 123 122 121 120 119

我已经能够进行数字验证,并在一行中显示它们之间的数字,但我不知道如何每隔五个数字构建换行符

这是我的密码:

import java.util.Scanner;

public static void main(String[] args) {

Scanner keyboard = new Scanner(System.in);
System.out.println("Input number”);

int num=keyboard.nextInt();

while(num<100 || num>150) {
        System.out.println(“Input number between 100 and 150");
        num=keyboard.nextInt();
    }

    System.out.println(“Input number 2”);
    int num2=keyboard.nextInt();

while (num2<10 || num2>50){
        System.out.println(“Input number between 10 and 50");
        num2=keyboard.nextInt();
    }

int i = num;

for (i=num;i>=num2;i--) {
       System.out.print(i+" ");
    }
   }
}
import java.util.Scanner;
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
系统输出打印项次(“输入编号”);
int num=keyboard.nextInt();
while(num150){
System.out.println(“输入编号介于100和150之间”);
num=键盘.nextInt();
}
System.out.println(“输入编号2”);
int num2=keyboard.nextInt();
while(num250){
System.out.println(“10到50之间的输入编号”);
num2=keyboard.nextInt();
}
int i=num;
对于(i=num;i>=num2;i--){
系统输出打印(i+“”);
}
}
}
尝试使用mod,例如

if(countnum % 5 == 0){
    do something
}
首先,你应该做:

do{
System.out.println(“Input number between 100 and 150");
num=keyboard.nextInt();
}
while(!(num>100 && num<150));
do{
System.out.println(“输入编号介于100和150之间”);
num=键盘.nextInt();
}

而(!(num>100&&num要以上面列出的格式打印出数字,数字以5为一组,您需要将以下内容添加到for循环中

int outputCount = 0;
    for (i=num;i>=num2;i--) {
        System.out.print(i+" ");
        if(outputCount%5==4)
        {
            System.out.print("\n");
        }
        outputCount++;
    }

这将使其正确打印。这是通过利用mod运算符来实现的。每次您在输出行的第5个数字处,索引数除以5的剩余部分将是4。

一种方法是使用mod,但这不是一个简单的mod操作

int offset = num % 5; // calculate the offset of the first number
for (i = num; i >= num2; i--) {
    if (i % 5 == offset && i!=num) { 
    // every five lines, but not at the beginning, print a new line
        System.out.println("");
    }
    System.out.print(i + " ");
}
还可以使用第二个计数器变量,这样就不必处理偏移:

for (int i = num, j = 0; i >= num2; i--, j++) {
    if (j % 5 == 0 && j > 0) System.out.println("");
    System.out.print(i + " ");
}

就像pietergdp的答案一样,但是使用迭代变量

int rem = (num + 1) % 5;

for ( i = num; i >= num2 ; i--) {
      System.out.print(i+" ");
      if(i % 5 == rem){
         System.out.print( "\n" ); // this inserts the line break
      }
}
让我解释一下。 我们不知道for循环将从哪个数字开始。因此,使用mod 5不会在第五个数字后插入换行符,但当该数字的余数为0时。如果循环从100开始,wich可能位于第一个数字


因此,一个解决方法是在初始数字上加1(如果有,它将是前一行的第五个数字)然后计算其余数。然后,每当一个数字具有相同的余数时,您计算的余数将是该行中的第五个数字。结果是插入换行符

似乎您忘记了在问题中包含一个问题。并且您忘了写一个真正描述您的核心问题的标题。例如,使用计数器va如何变量,每次打印一个数字时增加它,每次打印到5、10、15等时再打印一行。或者当它达到5时简单地将其重置为0?没有疑问,但我仍然很清楚问题是什么……这有点误导。模是需要的,但不是基于打印的数字,而是基于人的方式y号已打印。非常感谢您的建议,@Scotts没问题。:)随时都可以。非常感谢。这很有道理,我会给你一个机会的try@Neypu:这仅在
num%5==0
时有效,即可被5整除。对于150 ir有效,但对于149则无效。@user140547现在应该可以处理所有情况。它查看的是输出,而不是数字。@Neypu如果您再试一次,现在应该可以处理所有情况。再次感谢@davloi.现在每一个案例都很好。谢谢。使用第二个变量对我来说更干净。谢谢你。我真的很感谢你的解释。我为这个练习苦苦挣扎了几天,但我无法理解,但最终我明白了。
int rem = (num + 1) % 5;

for ( i = num; i >= num2 ; i--) {
      System.out.print(i+" ");
      if(i % 5 == rem){
         System.out.print( "\n" ); // this inserts the line break
      }
}