Это инструкции.
Напишите программу, которая читает последовательность входных значений и отображает гистограмму значений, используя звездочки.Вы можете предположить, что все значения являются положительными.Сначала выясните максимальное значение.Строка значения должна быть нарисована с 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
********************
****************************************
Мне нужны только звездочки.Все остальное, что печатается, предназначено только для проверки.