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