Se possível, poderiam me explicar o seguinte código?
//BarChart.java//Programa de impressão de gráfico de barras.publicclassBarChart{publicstaticvoidmain(Stringargs[]){intarray[]={0,0,0,0,0,0,1,2,4,2,1};System.out.println("Grade de distribuição: ");//para cada elemento de array, gera a saída de uma barra de gráficofor(intcounter=0;counter<array.length;counter++){//gera saída do rótulo de barra("00-09:",...,"90-99:","100:")if(counter==10)System.out.printf("%5d:",100);elseSystem.out.printf("%02d-%02d:",counter*10,counter*10+9);//imprime a barra de asteristicosfor(intstars=0;stars<array[counter];stars++)System.out.print("*");}}}
De onde é tirado esses 00-09,10-19, 20-29: etc.
E como imprime asteristicos(*) apenas no 70,80 e etc ?
O código está um pouco confuso.
Até mais…
Andre_Rosa
Repare que você possui 11 elementos no vetor. O seu for() percorre de 0 à quantidade de elementos no vetor, portanto o laço percorrerá 11 vezes. No primeiro loop, onde o contador têm como valor 0, o seu valor inicial, ele faz o seguinte cálculo aritmético:
Se counter for == 10, ele realiza a conta aritmética. De onde vai ser retirado esse 10 ?
Andre_Rosa
hackum:
Se counter for == 10, ele realiza a conta aritmética. De onde vai ser retirado esse 10 ?
Errado! Se counter for diferente de 10 ele realizará os cálculos.
if(counter == 10) //Se for igual a 10
System.out.printf("%5d:", 100);
else // Se não for (igual a 10)
System.out.printf("%02d-%02d:",counter * 10, counter * 10 + 9);
Quanto o contador chega à 10, ele imprime 100, como você pode ver na saída formatada.
hackum
Olá André!
Obrigado, consigui compreender!
Mas, e a questão do asteristico ?