Soma de Arrays

Oi gente, desculpe se estou postando no lugar errado ou se ja tem algo parecido resolvido. Sou novo no site e preciso resolver um exercicio de arrays.
Write a program that stores the following data in arrays.

Farmer Cows Pigs Sheep
Mr. Jones 120 100 200
Mr. Brown 300 200 150
Mrs. Murphy 400 0 50
Mrs. Flynn 300 250 400
Mr. Byrne 600 700 200

The program should output the farmer with the most sheep
the farmer with the least cows
the average number of pigs the farmers have

Essa parte eu ja fiz porque foi o que aprendi em sala de aula.
Porem a professora tambem deixou um desafio, gostaria que pudessem me ajudar.
A professora tambem pediu para mostrarmos o farmer com o maior numero de animais
ai que esta, como eu somo arrays?

Desde ja, muitissimo obrigado!!

public class farmerExercise {
public static void main(String[] args) {
String[] farmers = {“Mr. Jones”, “Mr. Brown”, “Mrs. Murphy”, “Mrs Flynn”, “Mr. Byrne”};
int[] cows = {120, 300, 400, 300, 600};
int[] pigs = {100, 200, 0, 250, 700};
int[] sheep = {200, 150, 50, 400, 200};

	int mostSheep = sheep[0];
	int leastCows = cows[0];
	double avgPigs = 0.0;
	
	System.out.println("                     Farmers                             ");
	System.out.println("                     -------                             ");
	System.out.printf("%-15s %10s %10s %10s\n", "Farmer", "Cows", "Pigs", "Sheeps");
	System.out.println("------------------------------------------------");
	
	
	for (int i=0; i<farmers.length; i++) {
		System.out.printf("%-15s %10d %10d %10d\n", farmers[i], cows[i], pigs[i], sheep[i]);
		if (sheep[i]>mostSheep) {
			mostSheep = sheep[i];
		}
		if(cows[i]<leastCows) {
			leastCows = cows[i];
		}
		avgPigs+=pigs[i];
	}
	System.out.println("The following farmers has the haghiest number of Sheeps what is " + mostSheep + " Sheeps." );
	for(int i=0; i<sheep.length; i++) {
		if(sheep[i]==mostSheep) {
			System.out.println(farmers[i]);
		}
			
		}
	System.out.println("The following farmers has the lowest number of Cows what is " + leastCows + " Cows.");
	for(int i=0; i<cows.length; i++) {
		if(cows[i]==leastCows) {
			System.out.println(farmers[i]);
			
	}
	}
	
	double averagePigs = avgPigs/pigs.length;
	System.out.println("The Pig's average of all farmers is: " + averagePigs);
}

}

1 - Itere sobre cada array
2 - Leia e converta para valores numéricos todos os dados referentes à animais
3 - Some as quantias de animais

1 curtida

Primeiramente obrigado por responder.

Voce poderia por favor ser um pouquinho mais especifico? Desculpa, estou comecando agora com Arrays.

Só se eu fizer o exercício para ti.
Você já itera sobre os arrays, para responder as perguntas acima.
O resto, é só usar um pouco do cérebro para conseguir fazer.

1 curtida

Eu ja respondi as questoes acima, esta faltando apenas uma que e um desafio.
Que e: Mostre qual farmer tem o maior numero de animais.

Eu so preciso entender como eu somo arrays. e nao entendo a palavra itera, nao sei se eh giria mas estou aprendendo java em ingles.

Se for pra ser ignorante assim nao responde mais nao, amigao. .-.

Brother, você não soma os arrays, especialmente se forem do tipo String (que eu acredito seja o caso, não?).
Você itera sobre eles, pega os valores, converte e soma o valor convertido. Entendeu?

1 curtida

No seu exemplo você colocou os dados de cada pessoa na mesma posição do array, por exemplo o Mr. Jones com 120 vacas, 100 porcos e 200 ovelha, ficou na posição 0 do vetor, o Mr. Brown com 300 vacas, 200 porcos e 150 ovelhas, na posição 1 do vetor, o que isso quer dizer? Que você vai fazer um método de ordenação que retorna a posição com maior número de animais, se retornar 0, vai mostrar “Mr. Jones”, se retornar 1 “Mr. Brown”, etc.
Então você vai ter que ter 2 variáveis temporárias que fazem isso, um inteiro para retornar a posição e um double com a soma dos animais. por exemplo:
int pos;
double soma=0;
for (int i=0; i<farmers.length; i++) {
if((cows[i]+pigs[i]+sheep[i])>soma){
pos=i;
soma=cows[i]+pigs[i]+sheep[i];
}
}
System.out.println(“O Fazendeiro com maior número de vacas é: " + farmers[pos] + " com " + soma + " animais”);

1 curtida

O que a pessoa acima quis dizer não é gíria, é linguagem usada por quem programa, como parece ser seu caso, quando se tem vários dados como o seu geralmente é usado List, ArrayList ou HashMap, que você usa iteração. Pedindo ajuda aqui você vai ler muitas palavras que talvez não conheça, mas deve procurar o significado na internet, pois são palavras comuns aqui. O objetivo aqui é te ensinar a desenvolver a lógica e não resolver suas questões, por isso sempre você vai ver explicações do que você deve fazer, e se você não tiver tentado nada, então ninguém vai querer te ajudar.

1 curtida

Ok, if you’re learning it in english, here we go.
You must to iterate over the arrays, same way you did here:

Understand?

Of course, not fot the farmers array, for each animal, ok?
As the arrays are representing int values, it’ll be easy to get the values and sum them.

Try it.

1 curtida

Obrigado pelas respostas!!
Vou tentar agora e posto os resultados !
Desculpe se soei arrogante, deve ser minha falta de experiencia.

iterar - verbo transitivo direto - fazer ou dizer novamente; repetir, reiterar.

Se eu fosse você, criaria uma classe Farmer com os atributos String name, int cows, int pigs e int sheeps.
Aí, ao invés de ter 4 arrays, teria somente um array de Farmer.

1 curtida

Essa foi a que fez mais sentido para mim.
o resultado ficou assim e funcionou exatamente como minha professora pediu.
Criei uma variavel para retornar a posicao e poder imprimir o nome do farmer for do bloco e uma para a soma dos animais, assim como voce disse.
E em seguida criei o loop for, ficou assim:

for (int c=0; c<farmers.length; c++) {
if(cows[c]+pigs[c]+sheeps[c]>mostAnimals) {
mostAnimals = cows[c]+pigs[c]+sheeps[c];
posSum= c;
}
}

Entendi perfeitamente apos estudar em cima deste mesmo exercicios por diversas vezes.
Muitissimo obrigado, realmente ajudou muito!!

1 curtida

Muito obrigado! Mas eu na verdade nao posso fazer muitas alteracoes, precisava trabalhar com o cenario que a professora me deu!
Muitissimo obrigado pela explicacao da palavra Iteracao, que eu nao estava familiarizado nas agora gracas a voces, estou!

Obrigado!

Obrigado mesmo!
Suas dicas foram muito uteis!!
Ate a proxima!

Tem certeza?
Seu enunciado diz o seguinte:

Write a program that stores the following data in arrays.

Farmer      Cows  Pigs  Sheep
Mr. Jones    120   100    200
Mr. Brown    300   200    150
Mrs. Murphy  400     0     50
Mrs. Flynn   300   250    400
Mr. Byrne    600   700    200

The program should output the farmer with the most sheep
the farmer with the least cows
the average number of pigs the farmers have

Você realmente precisa fazer um array para os nomes, um array para a quantidade vacas, um array para a quantidade de porcos e um array para a quantidade de ovelhas?

Pra mim parece bem evidente que você teria que criar uma classe Farmer com os atributos name, cows, pigs e sheeps.
:wink:

Exemplo:

public class Farmer {

    String name;
    int cows;
    int pigs;
    int sheeps;

    public Farmer() {}

    public Farmer(String name, int cows, int pigs, int sheeps) {
        this.name = name;
        this.cows = cows;
        this.pigs = pigs;
        this.sheeps = sheeps;
    }

    @Override
    public String toString() {
        return String.format("Farmer[name: %s, cows: %d, pigs: %d, sheeps: %d]", name, cows, pigs, sheeps);
    }
}

public class FarmerExercise {

    public static void main(String[] args) {
        Farmer[] farmers = {
                new Farmer("Mr. Jones", 120, 100, 200),
                new Farmer("Mr. Brown", 300, 200, 150),
                new Farmer("Mrs. Murphy", 400, 0, 50),
                new Farmer("Mrs Flynn", 300, 250, 400),
                new Farmer("Mr. Byrne", 600, 700, 200)
        };

        Farmer mostSheep = null;
        Farmer leastCows = null;
        double avgPigs = 0;

        System.out.println("                     Farmers                             ");
        System.out.println("                     -------                             ");
        System.out.printf("%-15s %10s %10s %10s\n", "Farmer", "Cows", "Pigs", "Sheeps");
        System.out.println("------------------------------------------------");
        for (Farmer farmer : farmers) {
            System.out.printf("%-15s %10d %10d %10d\n", farmer.name, farmer.cows, farmer.pigs, farmer.sheeps);
            if (mostSheep == null || farmer.sheeps > mostSheep.sheeps) {
                mostSheep = farmer;
            }
            if (leastCows == null || farmer.cows < leastCows.cows) {
                leastCows = farmer;
            }
            avgPigs += farmer.pigs;
        }
        avgPigs = avgPigs / (double) farmers.length;

        System.out.println("The following farmer has the highest number of Sheeps that is " + mostSheep.sheeps + " Sheeps.");
        System.out.println(mostSheep.name);

        System.out.println("The following farmer has the lowest number of Cows that is " + leastCows.cows + " Cows.");
        System.out.println(leastCows.name);

        System.out.println("The Pig's average of all farmers is: " + avgPigs);
    }
}
1 curtida