Оператор print после цикла for не печатает, почему? - PullRequest
1 голос
/ 20 сентября 2019
//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111

import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int number;
        for(int i=0;i<=n;i++){
            int count=0;
            number=in.nextInt();
            while(number!=0){
                count++;
                number=number/10;
                }System.out.println(count);

        }System.out.println(n);//this does not get printed
    }
}

n должен печатать набранный n. Почему n не печатается после цикла for?он печатается внутри цикла for

Ответы [ 4 ]

2 голосов
/ 20 сентября 2019

Я думаю, что причина, по которой вы думаете, что это не печать, заключается в том, что ваш цикл for выполняет на одну дополнительную итерацию больше, чем вы ожидали.

Скажем, если вы ввели 1, то 999, вывод будет 3.В этот момент вы ожидаете, что цикл завершится, и 1 (то есть n) будет напечатано снова, верно?Но поскольку ваш заголовок цикла for говорит int i=0;i<=n, он будет фактически выполняться (n + 1) раз.Цикл еще не закончился после вывода 999 и снова ждет вашего ввода.Это могло заставить вас думать, что программа завершилась без печати n.

Вы должны изменить условие цикла for на i < n.

0 голосов
/ 20 сентября 2019
Your Loop is working. According to your code you have to give two input values. Have put comments in your code where you request the inputs. According to the code the loop will run number of times which you enter as the **input 1(n)** then each an every looping you have to enter the **input 2(number)** value


import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        Scanner in=new Scanner(System.in); //Input 1
        int n=in.nextInt();
        int number;
        for(int i=0;i<=n;i++){
            int count=0;
            number=in.nextInt(); //Input 2
            while(number!=0){
                count++;
                number=number/10;
                }System.out.println(count);

        }System.out.println(n);
    }
}
0 голосов
/ 20 сентября 2019

Ваш код работает должным образом. Вы должны добавить sysout перед использованием in.nextInt ();Чтобы вы знали, что программа ожидает ввода пользователя. Пожалуйста, проверьте код ниже.

public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a number - ");
        int n = in.nextInt();
        int number;
        for (int i = 0; i <= n; i++) {
            int count = 0;
            System.out.println("Enter another number - ");
            number = in.nextInt();
            while (number != 0) {
                count++;
                number = number / 10;
            }
            System.out.println("Count - "+count);
        }
        System.out.println("N is "+ n);
    }

Вывод, как показано ниже.

Enter a number - 
5
Enter another number - 
5
Count - 1
Enter another number - 
5
Count - 1
Enter another number - 
5
Count - 1
Enter another number - 
5
Count - 1
Enter another number - 
5
Count - 1
Enter another number - 
5
Count - 1
N is 5
0 голосов
/ 20 сентября 2019

Это будет напечатано только после выхода из цикла for, поэтому, если вы хотите, чтобы он печатался каждый раз, просто переместите его внутрь для следующим образом:

public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int number;
        for (int i = 0; i <= n; i++) {
            int count = 0;
            number = in.nextInt();
            while (number != 0) {
                count++;
                number = number / 10;
            }
            System.out.println(count);
            System.out.println(n);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...