Azərbaycan dili Bahasa Indonesia Bosanski Català Čeština Dansk Deutsch Eesti English Español Français Galego Hrvatski Italiano Latviešu Lietuvių Magyar Malti Mакедонски Nederlands Norsk Polski Português Português BR Românã Slovenčina Srpski Suomi Svenska Tiếng Việt Türkçe Ελληνικά Български Русский Українська Հայերեն ქართული ენა 中文
Subpage under development, new version coming soon!

Subject: Programação

2009-02-16 22:13:19
import javax.swing.JOptionPane;


public class Chuva {



public static void main (String[]args)
{
Chuvas ch[] = new Chuvas[31];
float soma=0,media=0;
float soma2=0,media2=0;
float total=0;


for (int i=1; i<32; i++)
{
ch[i].setJanmm(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Janeiro?")));
soma=ch[i].getJanmm()+soma;
}

media=soma/31;

JOptionPane.showMessageDialog(null, "A média desse mês é:" + media);

for (int i=1; i<29; i++)
{
ch[i].setFevmm(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Fevereiro?")));
soma2=ch[i].getFevmm()+soma2;
}

media2=soma2/31;

JOptionPane.showMessageDialog(null, "A média desse mês é:" + media2);

total=(media+media2)/2;

JOptionPane.showMessageDialog(null, "A média mensal é:" + total);





}
}
(edited)
2009-02-16 22:15:02
ah jah vi o erro

corrigi mas continua
(edited)
2009-02-16 22:24:01
tem como mostrar os set e os get da classe Chuvas?
2009-02-16 22:29:44
public class Chuvas {

private float Janmm;
private float Fevmm;

public float getJanmm() {
return Janmm;
}

public void setJanmm(float janmm) {
this.Janmm = janmm;
}

public float getFevmm() {
return Fevmm;
}

public void setFevmm(float fevmm) {
this.Fevmm = fevmm;
}

}
2009-02-16 22:41:46
cara, acredito que a disposicao deste codigo nao é a ideal, mas vamos lá:

vc precisa de um construtor na classe Chuvas, e precisa construir cada item do array... só assim ele vai parar de dar null pointer

ex:
public Chuvas() {}

e no teu Chuva.java:

(...) // no primeiro for:
for (int i=1; i<32; i++)
{
ch[i] = new Chuvas();
ch[i].setJanmm(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Janeiro?")));
soma=ch[i].getJanmm()+soma;
}
(...)

no teu segundo for, nao precisa dar "ch[i] = new Chuvas()" de novo.
2009-02-16 22:51:43
teeeeem razão, nao construi a classe construturo direito.. :P

fiz isso no programa passado e esqueci af eh mto detalhe :P

vlw :D

agora eh quebrar a cabeça pra colocar o dia q mais choveu :)
2009-02-16 23:01:25
uma sugestão: por que nao organizar a parada por mes, ao inves de um array de dias que cobre dois meses?

public class ChuvasMes {

private int diasMes;
private List mmDia;

// numero de dias no mes
public Chuvas (int dias) {
this.dias = dias;
this.mmDia = new LinkedList();
mmDia = new ArrayList();
}

//adiciona milimetros no proximo dia disponivel
public void addMMDia (Float mm) {
//se o numero de dias do mes foi extrapolado, lança exception
if(mmDia.size() > this.diasMes) {
throw new NumeroDiasInvalidoException();
}
mmDia.add(mm);
}

// modifica o mm de um determinado dia do mes
// i = 0, dia 1... int = 29, dia 30
public void addMMDia (int i, Float mm) {
mmDia.remove(i);
mmDia.add(i,mm);
}

public float getSomaMMMes() {
float retorno = 0;
for(int i=0; i < mmDia.size(); i++) {
retorno += Float.parseFloat(mmDia.get(i));
}
return retorno;
}

public float getMediaMMMes() {
return getSomaMMMes()/dias;
}
}

no teu main, vc teria:

public static void main (String[]args)
{

ChuvasMes chJan = new ChuvasMes(31); //31 dias em janeiro
ChuvasMes chFev = new ChuvasMes(28); //28 dias em fevereiro

for (int i=1; i<32; i++)
{
chJan.addMMDia(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Janeiro?")));
}

JOptionPane.showMessageDialog(null, "A média desse mês é:" + chJan.getMediaMMMes());

...

JOptionPane.showMessageDialog(null, "A média mensal é:" + 0.5*(chJan.getMediaMMMes()+chFev.getMediaMMMes()));
2009-02-16 23:05:54
assim voce facilmente cria um metodo para o dia que mais choveu tambem da classe ChuvasMes...

public int getDiaMaisChuvoso() {
int retorno = 0;
float maiorMM = 0;

for (int i = 0; i < diasMes; i++) {
if(maiorMM < Float.parseFloat(mmDia.get(i))) {
maiorMM = Float.parseFloat(mmDia.get(i));
retorno = i;
}
}
//ate aqui, index 0, dia 1, index 29, dia 30.. entao é necessário incrementar...
retorno++;
return retorno;
}
(edited)
2009-02-16 23:24:32
Message deleted

2009-02-16 23:27:05
hmmmm

mas aí eu nao vou pelo meu raciocínio, vou pelo seu, acho q eu aprendo mais indo pelo meu raciocinio
e tem coisas aí q eu nao vi, ou nao sei usar direito ainda

mas vc me deu uma boa ideia

vlw =*
2009-02-17 00:54:22
heheh blz, qqr coisa tamos ae
2009-02-17 18:33:15
olhae como eu fiz... deu certo :D



public static void main (String args[])
{
Chuvas Ch[] = new Chuvas[32];
float soma=0,media=0;
float soma2=0,media2=0;
float total=0;
float x=1;
float y=1;
float z=0;


for (int i=1; i<32; i++)
{

Ch[i] = new Chuvas();
Ch[i].setJanmm(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Janeiro?")));
soma=Ch[i].getJanmm()+soma;

[b]x = Ch[i].getJanmm();

if (x>z)
{
z=x;
}[/b]
}

media=soma/31;

JOptionPane.showMessageDialog(null, "A média desse mês é:" + media + "mm por dia.");

for (int i=1; i<29; i++)
{
Ch[i].setFevmm(Float.parseFloat(JOptionPane.showInputDialog("Quantos mm choveu Dia " + i + " de Fevereiro?")));
soma2=Ch[i].getFevmm()+soma2;

} [b]y = Ch[i].getFevmm();

if (y>z)
{
z=y;
}[/b]
}

media2=soma2/31;

JOptionPane.showMessageDialog(null, "A média desse mês é: " + media2 + "mm por dia.");

total=(media+media2)/2;

JOptionPane.showMessageDialog(null, "A média mensal é: " + total + "mm.");

[b] for (int i=1; i<32; i++)
{

if (Ch[i].getJanmm()==z )
{
JOptionPane.showMessageDialog(null, "O dia que mais choveu foi dia " + i + " de Janeiro, choveu " + z + "mm.");
}

if (Ch[i].getFevmm()==z )
{
JOptionPane.showMessageDialog(null, "O dia que mais choveu foi dia " + i + " de Fevereiro, choveu " + z + "mm.");
}[/b]
}

porra consigo colocar em negrito nao :P
(edited)
(edited)
2009-02-18 05:03:32
As { (chaves) ferram com a formatação bbcode do fórum. Nem fique tentando. =P

Esses for-loops com i começando em 1 tão certo?
2009-02-18 14:17:12
estão, é a mesma coisa de ele comecar o zero e tratar com (i+1) ao invés de i.

Eiro: parabéns, imaginei que você fosse fazer algo parecido, para não mudar tua lógica :)
2009-02-19 21:43:14
eu começo assim para não fazer confusão, pq se for fazer do zero ele conta

tipo se eu for pedir quanto choveu no dia 17, ai ia ter q procurar na posição de nº 18, iria atrapalhar um pouco, =p
2009-03-16 15:49:40
import javax.swing.JOptionPane;

public class ProgNumero {

public static void main(String[] args)
{
NumeroInteiro[] Lista;
Lista = new NumeroInteiro[100];
int cont=0;
int op=0;
String opcoes =
" - CALCULADORA - " +
"\n\n***Opções*** "+
"\n1. Inserir Numero"+
"\n2. Listar Numeros"+
"\n3. Consultar"+
"\n4. Somar"+
"\n5. Média"+
"\n6. Finalizar"+
"\n\nSelecione a opção: ";

while (op != 6)
{
op = Integer.parseInt(JOptionPane.showInputDialog(null,opcoes,
JOptionPane.QUESTION_MESSAGE));


if (op==1)
{
if (cont==100)
{
JOptionPane.showMessageDialog(null, "Lista Cheia!!!");
}
else
{
NumeroInteiro num = new NumeroInteiro();
num.setNumero(Integer.parseInt(JOptionPane.showInputDialog("Insira o Número:")));
Lista[cont] = num;
cont++;
}
}
if (op==2)
{
for (int i=0; i<cont; i++)
{
JOptionPane.showMessageDialog(null, "Número " + i + " => " + Lista[i].getNumero());
}
}
if (op==3)
{

NumeroInteiro Chave;

Chave(Integer.parseInt(JOptionPane.showInputDialog("Insira o Número à ser consultado:")));
{
int ind=0;

while (ind<Lista.length)
if (Lista[ind]==Chave)
{
JOptionPane.showMessageDialog(null, "O Número " + Chave + " está na posição " + ind);
break;
}
else
ind++;
}




voltei de novo :D

to com 2 problemas

nessa linha Chave(Integer.parseInt(JOptionPane.showInputDialog("Insira o Número à ser consultado:")));

ta dando erro na "Chave", na verdade eu n sei oq colocar, eu sei q ta errado, mas n sei oq colocar

o outro

if (op==2)
{
for (int i=0; i<cont; i++)
{
JOptionPane.showMessageDialog(null, "Número " + i + " => " + Lista[i].getNumero());
}

ele ta listando só o número 0(zero)