Как выйти из сканера при отрицательном входе? - PullRequest
0 голосов
/ 28 января 2019

Это инструкции.

Напишите программу, которая читает последовательность входных значений и отображает гистограмму значений, используя звездочки.Вы можете предположить, что все значения являются положительными.Сначала выясните максимальное значение.Строка значения должна быть нарисована с 40 звездочками.Более короткие столбцы должны использовать пропорционально меньшее количество звездочек.

Это то, что я до сих пор придумывал.Это все хорошо, за исключением того, что мне нужно ввести букву вместо отрицательного числа, чтобы выйти из сканирования.Я пытался (если (<0) вещи), но они не работали. </p>

import java.util.Scanner;

public class BarChart1 {
    public static void main(String [] args) {
        int[] arr = new int[100];
        int currentSize = 0;
        System.out.println("Enter a sequence of positive integers.  "

                + ("Enter a negative value to quit:"));
        Scanner in = new Scanner(System.in);

        while(in.hasNextInt()) {
        int num = in.nextInt();
            if (num < 0) {
                break;
            }
            else {
                arr[currentSize] = in.nextInt();
                currentSize++;
            }
        }

        //will find the max
        double max = arr[0];
        int y = 0;
        for (int i = 1; i < arr.length; i++) {
            y = i + 1;
            if(max < arr[i]) {
                max = arr[i];
                //y = i + 1;
            }

        }

        System.out.println("Max number is: " + max);
        System.out.println("Number of digits = " + y);
        System.out.println(Math.abs(-1));

        double scale = 40/max;
        System.out.println("Scale = " + scale);


        for (int i = 0; i < y; i++) {
            double h = scale * arr[i];
            if (h != 0) {
                for (int j = 1; j <= h; j ++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }

}

Это результат.

1
2
3
4
-1
Max number is: 4.0
Number of digits = 100
Scale = 10.0
********************
****************************************

Мне нужны только звездочки.Все остальное, что печатается, предназначено только для проверки.

1 Ответ

0 голосов
/ 28 января 2019

Вы можете попробовать это:

    while(in.hasNextInt()) {
     int num =in.nextInt();
          if(num <0){
              break;
             }
          else{
               arr[currentSize] = num;
               currentSize++;
            }
}
...