Как напечатать одно число только один раз, используя вложенные циклы в Java? - PullRequest
0 голосов
/ 02 марта 2020

Все отлично работает в моем Java коде, кроме самого конца кода. Поэтому я не могу понять, как распечатать номер пользователя, если он одинаковый. Например, я запрашиваю у пользователя начальный номер и конечный номер (целые числа). Допустим, пользователь вводит одно и то же целое число «10» для начального номера и «10» для конечного номера. Я хочу, чтобы вывод был только «10», чтобы он печатался только один раз. Я перепробовал все, что мог придумать, пытаясь Пока L oop, Do-While L oop и For Loops, но я просто не могу понять это?

------ ------------------ JAVA КОД НИЖЕ --------------------------- ----------------

import java.util.Scanner;

public class LoopsAssignment {
   public static void main(String[] args) {

      // input Scanner
      Scanner input = new Scanner(System.in);
      // ask user for a starting number and a ending number
      System.out.println("Now I'll print whatever numbers you'd like!");
      System.out.println("Give me a starting number: ");
      startNum = input.nextInt();
      System.out.println("Give me an ending number: ");
      endNum = input.nextInt();

      // count the users range of numbers
      System.out.println("I counted your range of numbers: ");  
      int a = startNum;
      int b = endNum;

      while (a <= b) {
         System.out.println(a);
         a = a + 1;
      }
         while (a >= b) {
            System.out.println(a);
            a = a - 1;
         }
            while (a == b) {
               System.out.println(a); 
            }    

   }
}

--------------------- ВНИЗ ВНИЗ - -------------------------------------------------- -

Теперь я буду печатать любые цифры! Дайте мне начальный номер: 10 Дайте мне конечный номер: 10 Я посчитал ваш диапазон чисел: 10 11 10

---- jGR ASP: операция завершена.

Ответы [ 4 ]

0 голосов
/ 02 марта 2020

Проблема в ваших первых двух циклах while, где вы используете ">=" и "<=". Вы можете удалить "=" из условия.

Однако вы можете улучшить свой код, как предложено в других комментариях.

0 голосов
/ 02 марта 2020

То есть вы либо считаете вверх, вниз, либо есть только один.

То есть

int step = endNum>startNum ? +1 : -1;
int a = startNum;
int b = endNum;
while (a != b) {
    System.out.println(a);
    a = a + step;
}
System.out.println(b);

Или поставьте break в середине for l oop , Также есть += и несколько вещей, которые мы можем сделать более обычными.

int step = endNum>startNum ? +1 : -1;

for (int i=startNum; ; i+=step) {
    System.out.println(i);
    if (i == endNum) {
        break;
    }
}
0 голосов
/ 02 марта 2020

Вы можете реструктурировать свой код следующим образом:

  while (a < b) {
     System.out.println(a);
     a = a + 1;
  }

  while (a > b) {
     System.out.println(a);
     a = a - 1;
  }

  if (a == b) {
     System.out.println(a); 
  }
0 голосов
/ 02 марта 2020

Вы можете использовать for loop:

public static void printRange(int minInclusive, int maxInclusive) {
    for (; minInclusive <= maxInclusive; minInclusive++)
        System.out.println(minInclusive);
}
...