class Program
{
static void Main(string[] args)
{
{
double[] respostas = {13.3,15.2,12.4,15.8,9.6,10.4,13.2,8.8,8.3,8.5,10.2,
11.5,12.6,10.7,12.6,9.7,12.1,13.5,10.3,14.3,9.8,12.3,
10.4,11.6,12.4,12.9,11.6,10.3,14.2,13.8};
// double menor, maior;
double wcontadorf = 8.3; //variável que vai armazenar os valores q serão incrementados na matriz principal)
// o seu valor inicial é o menor valor do array
int wclasses = 5; //classes digitadas pelo usuário (número de opções de visualizações)
double wintervalo = 1.5; // intervalo de cada classe (maior valor - menor valor) / (classes)
double[,] matriz = new double[wclasses, 3]; //matriz q vai conter todas as classes
// linhas será número de classes
// colunas valor fixo 3
// col1=intervalo frequencia inicial
// col2=intervalo frequencia final
// col3=total de itens dentro da frequencia
// for para criar array principal com todos os intervalos
for (int h=0; h < wclasses;h++)
{
matriz[h,0] = wcontadorf; // exemplo: coluna 0 = 8.3
matriz[h,1] = wcontadorf += wintervalo; //coluna 1 = 9,8
}
double winiciof, wfimf;
// ler somente linha só passa para próxima depois de ler todas as respostas
for (int i = 0; i <= matriz.GetUpperBound(0); i++)
{
// leu primeira linha do array principal
for (int l=0; l < respostas.Length; l++)
{
winiciof = matriz[i,0]; // linha 0, colun 0 = 8,3
wfimf = matriz[i,1]; // linha 0, coluna 1 = 9,8
// ler todas as repostas
// 13.3
// varre todas as repostas e armazena na coluna atual
if (i == matriz.GetUpperBound(0))
{
if ((respostas[l] >= winiciof) && (respostas[l] <= wfimf))
{
matriz[i,2] = ++matriz[i,2];
}
}
else
{
if ((respostas[l] >= winiciof) && (respostas[l] < wfimf))
{
matriz[i,2] = ++matriz[i,2];
}
}
}
}
// varre linhas
for (int i = 0; i <= matriz.GetUpperBound(0); i++)
{
// varre colunas da linha acima
for (int y = 0; y <= matriz.GetUpperBound(1); y++)
{
Console.Write(matriz[i, y] + " ");
}
Console.WriteLine();
}
// varrer para exibir a coluna final
double wtotal = 0;
Console.WriteLine("==coluna frequencia===");
for (int i = 0; i <= matriz.GetUpperBound(0); i++)
{
Console.Write(matriz[i, 2]); // varia somente a linha a coluna é a última
wtotal = wtotal + matriz[i,2];
Console.WriteLine();
}
Console.WriteLine("==================================");
Console.WriteLine("Total de Frequências: " + wtotal.ToString());
Console.Read();
}
}
}
Converter codigo C# em codigo Java
1 Resposta
A documentação do .net diz o seguinte com relação ao método GetUpperBound()
An example of GetUpperBound is GetUpperBound(0), which returns the upper bound for the indexes of the first dimension of the Array and GetUpperBound(Rank - 1) returns the upper bound of the last dimension of the Array.
com o exemplo de código como segue:
using System;
public class SamplesArray {
public static void Main() {
// Creates a new one-dimensional Array of type Int32.
Array my1DIntArray = Array.CreateInstance( typeof(Int32), 5 );
// Uses GetLowerBound and GetUpperBound in the for loop.
for ( int i = my1DIntArray.GetLowerBound(0); i <= my1DIntArray.GetUpperBound(0); i++ )
my1DIntArray.SetValue( i+1, i );
// Displays the bounds and values of the one-dimensional Array.
Console.WriteLine( "One-dimensional Array:" );
Console.WriteLine( "Rank\tLower\tUpper" );
Console.WriteLine( "{0}\t{1}\t{2}", 0, my1DIntArray.GetLowerBound(0), my1DIntArray.GetUpperBound(0) );
Console.WriteLine( "Values:" );
PrintValues( my1DIntArray );
Console.WriteLine();
}
public static void PrintValues( Array myArr ) {
System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
int i = 0;
int cols = myArr.GetLength( myArr.Rank - 1 );
while ( myEnumerator.MoveNext() ) {
if ( i < cols ) {
i++;
} else {
Console.WriteLine();
i = 1;
}
Console.Write( “\t{0}”, myEnumerator.Current );
}
Console.WriteLine();
}
}
/*
This code produces the following output.
One-dimensional Array:
Rank Lower Upper
0 0 4
Values:
1 2 3 4 5
O qual como você pode ver quando chamado GetUpperBound(0) retorna o maior indice do array que em java podemos conseguir com a expressão array.length -1.
O que eu notei de especial no metodo, é com relação a arrays multi dimensionais, que quando vc informa um indice tal como 1 ou 2 ele vai buscar o valores dentro do “sub array” do indice. Tipo assim imagine que vc tem um array multi dimensional e que o seu indice 1 do array é um outro array, então com o uso do metedo o que o array vai fazer é pegar a mesma informação (maior indice do array que esta no indice 1) o que pode fazer assim com java:
array[1].length sendo que o conteudo de array[1] é um outro array
espero ter ajudado…