Напишите программу для чтения двух чисел, первое меньше второго. Программа запишет все числа между двумя числами

// Итак, я написал это: (выход там)

import java.util.Scanner;
public class E7L6{
public static void main(String[]args){
int num1, num2;
Scanner keyboard= new Scanner(System.in);
System.out.print("Type two numbers:");
num1= keyboard.nextInt();
num2= keyboard.nextInt();

if(num1<num2){
   while(num1<=num2){
   int counter=num1;
   System.out.print(counter+" "+num2);
   counter=counter+1;
   }}
else{
   System.out.print("Error: the first number must be smaller than the second");
}   
  }}

Output:
 ----jGRASP exec: java E7L6
Type two numbers:4 124
 4 4 4 4 4 4 4 4 4
 ----jGRASP: process ended by user.

// так много повторяющихся цифр 4 может кто-нибудь сказать мне, где я не прав? Спасибо!!

4 ответа

Решение
  while(num1<=num2){
   int counter=num1;
   System.out.print(counter+" "+num2);
   counter=counter+1;
  }

Это закончится бесконечным циклом. Условие для цикла while необходимо изменить.

// модифицированный код - полный код.

import java.util.Scanner;

public class E7L6 {
    public static void main(String[] args) {
        int num1, num2;
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Type two numbers:");
        num1 = keyboard.nextInt();
        num2 = keyboard.nextInt();

        if (num1 < num2) {
            int counter = num1;
            while (counter <= num2) {
                System.out.print(counter + " ");
                counter = counter + 1;
            }
        } else {
            System.out
                    .print("Error: the first number must be smaller than the second");
        }
    }
}
int counter=num1;

Вы создали новый counter переменная для каждой итерации цикла.
Поэтому все они имеют одинаковую ценность.

Он работает вечно, потому что ваше условие цикла никогда не может быть ложным (вы никогда не меняете num1 или же num2).

Ну вот:

System.out.print("First:");
    int first = Integer.parseInt(reader.nextLine());
    System.out.print("Second:");
    int second = Integer.parseInt(reader.nextLine());
    while (first <= second) {
        System.out.println(first);
        first++;
    }

Как начинающий программист, я бы использовал вместо цикла. Это было бы проще и проще:

for(ctr=num1;ctr<=num2;ctr++)
   s.o.p(ctr)
Другие вопросы по тегам