Dúvida sobre Array

Eu estou fazendo um construtor onde o array de meses entra como parametro. O meu construtor está assim:

public EmpregadoVendedor(String n, double s, int mesDoAno[]) {
	super(n, s);
	mesDoAno = new int[12];
	
	for(int i = 1; i < mesDoAno.length; i++) {
		switch(mesDoAno[i]) {
			case 1:
				mesDoAno = new int[31];
				break;
			case 2:
				mesDoAno = new int[28];
				break;
			case 3:
				mesDoAno = new int[31];
				break;
			case 4:
				mesDoAno = new int[30];
				break;
			case 5:
				mesDoAno = new int[31];
				break;
			case 6:
				mesDoAno = new int[30];
				break;
			case 7:
				mesDoAno = new int[31];
				break;
			case 8:
				mesDoAno = new int[31];
				break;
			case 9:
				mesDoAno = new int[30];
				break;
			case 10:
				mesDoAno = new int[31];
				break;
			case 11:
				mesDoAno = new int[30];
				break;
			case 12: mesDoAno = new int[31];
				break;
			default: System.out.println("Valor inválido");
		}
	}
}

// GOSTARIA DE SABER PORQUE ESTÁ DANDO ESTE ERRO

Error.incompatible types : int cannot be converted to int []

Bom alguns ajustes…

Na minha opinião, se já você recebe o array como parâmetro, essa linha é desnecessária…

mesDoAno= new int[12];

Pois ele teria de vir criado/preenchido…

Cuidado com essa linha…

for(int i=1; i<mesDoAno.length; i++)

Todo array começa em zero, logo seu for vai correr da segunda posição até a última, ou seja de 1-11, perdendo a primeira posição/valor

Nos cases, essas linhas…

case 1 : mesDoAno=new int [31];

Você só está recriando arrays no mesmo objeto, isso vai “resetar” o array a cada volta do for… se quiser preencher o valor na posição deve fazer…

case 1 : mesDoAno[i] = 31;

Não sei se precisa usar switch, mas seu array pode ser criado com todos os valores de uma só vez já que sempre será 12…

int[] mesDoAno= {31, 28, 31, 30, 31, 30, 30, 31, 30, 31, 30, 31};

Pergunta, o que você faria em ano bissexto (fevereiro com 29 dias)?

O professor pediu para descartar essa opção de fevereiro

acabei tendo que arrumar o construtor e ficou assim

public class EmpregadoVendedor extends Empregado {
private int totalDiarioDeVendas [];
private int valorTotalComissoes;

public EmpregadoVendedor(String n, double s, int mesDoAno ) {
	super(n, s);
	

	switch(mesDoAno) {
	case 1 : this.totalDiarioDeVendas=new int [31];
		break;
	case 2 : this.totalDiarioDeVendas=new int [28];
		break;	
	case 3 : this.totalDiarioDeVendas= new int [31];
		break;
	case 4 : this.totalDiarioDeVendas= new int [30];
		break;
	case 5 : this.totalDiarioDeVendas=new int [31];
		break;
	case 6 : this.totalDiarioDeVendas= new int[30];
		break;
	case 7: this.totalDiarioDeVendas= new int [31];
		break;
	case 8 : this.totalDiarioDeVendas= new int [31];
		break;
	case 9 : this.totalDiarioDeVendas= new int [30];
		break;
	case 10 : this.totalDiarioDeVendas= new int [31];
		break;
	case 11: this.totalDiarioDeVendas= new int [30];
		break;
	case 12 : this.totalDiarioDeVendas= new int [31];
		break;
		
		default: System.out.println("Valor inválido");
	}
}
public void fazVenda(int diaDoMesVenda) {
	
	for(int i=0; i<totalDiarioDeVendas.length; i++) {
	if(totalDiarioDeVendas[i]==0) {
		totalDiarioDeVendas[i]=diaDoMesVenda;
	}
}

}
}

só que não tenho como por um valor double dentro do array porque é um array de int, essa é a minha dúvida como posso armazenar um valor double dentro de um array de inteiros

Uma forma é truncando (perdendo informação) do double fazendo um cast assim…

int numero = (int) 1.99;

Nesse caso o int só vai guardar o 1, os 99 centavos vão sumir…

Você pode declarar o array como double (double[] nums = new double[30]), com isso, ele irá aceitar números inteiros e flutuantes (double). Outra forma é declarar um array de Number: Number[] nums = new Number[30].

Pergunta: Qual a ideia desses arrays? O que sua aplicação deve fazer?

1 curtida