Ir ao conteúdo
  • Cadastre-se

AdrianoSiqueira

Membro Pleno
  • Posts

    1.287
  • Cadastrado em

  • Última visita

Tudo que AdrianoSiqueira postou

  1. Problemas: Você não inicializou o vetor sexo, por isso está lançando NullPointerException. Declarou a variável media como atributo da classe, depois declarou novamente dentro do método insereInfo. Você declarou duas variáveis do tipo JTextArea, a menos que você esteja desenvolvendo uma interface gráfica, essas variáveis não vão servir de nada. Declare a variável de controle dos loops, dentro do próprio loop, assim evita eventuais problemas. Todos os laços for estão errados, eles não percorrem todos os elementos por causa do '-1'. No primeiro laço for você errou o índice do vetor sexo, colou '0' onde deveria ser 'i'. No segundo for você não informou o índice do vetor sexo que quer pegar os dados. Nos laços for para achar a maior e menor altura, não precisa da classe Math porque você já tem o if. A classe Math vai adulterar o resultado. As variáveis de maior e menor altura não podem ser inicializadas antes do vetor possuir dados, senão existe a chance da condição não ser satisfeita. Convenção Por convenção, nome de classe deve começar com letra maiúscula. Dica Quando sua variável se referir a um conjunto de dados, procure dar nomes no plural. Procure declarar uma variável por linha, mais do que isso não agrega nada no código e pode dificultar o entendimento do mesmo. Tente separar as funcionalidades do seu código em métodos, assim fica mais fácil de desenvolver, testar e corrigir eventuais problemas. Crie uma variável para conter a quantidade de itens dos vetores, isso melhora a legibilidade do código. Seu código com algumas correções: public class App { int quantidade = 3; double[] altura = new double[quantidade]; int[] sexo = new int[quantidade]; double menorAlt = 0.0; double maiorAlt = 0.0; double media = 0.0; double somaAltura = 0.0; public void insereInfo() { for (int i = 0; i < altura.length; i++) { String alt = "Digite a alt"; String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem"; altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null, alt)); somaAltura += altura[i]; sexo[i] = Integer.parseInt(JOptionPane.showInputDialog(null, sex)); } JTextArea outputTextArea = new JTextArea(); JTextArea outputTextArea1 = new JTextArea(); outputTextArea.setText("Indice\tAltura\tSexo\n"); for (int i = 0; i < altura.length; i++) { outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo[i] + "\n"); } JOptionPane.showMessageDialog(null, outputTextArea, "Demonstrativo 1", JOptionPane.INFORMATION_MESSAGE); maiorAlt = altura[0]; for (int i = 1; i < altura.length; i++) { if (altura[i] > maiorAlt) { maiorAlt = altura[i]; } } menorAlt = altura[0]; for (int i = 1; i < altura.length; i++) { if (altura[i] < menorAlt) { menorAlt = altura[i]; } } media = somaAltura / quantidade; JOptionPane.showMessageDialog(null, "Maior altura: " + maiorAlt + "\n" + "Menor altura: " + menorAlt + "\n" + "Altura média: " + media + "\n"); System.exit(0); } }
  2. Para declarar um vetor, faça assim: tipo[] nome = new tipo[quantidade]; Por exemplo, para criar um vetor com 5 nomes: String[] nomes = new String[5]; O acesso dos dados (tanto leitura, quanto escrita) é feito por meio do índice do vetor começando em 0. String[] nomes = new String[5]; nomes[0] = "Nome 1"; nomes[1] = "Nome 2"; nomes[2] = "Nome 3"; nomes[3] = "Nome 4"; nomes[4] = "Nome 5"; // Pegar o primeiro nome String primeiroNome = nomes[0]; // Pegar a quantidade de nomes int quantidadeNomes = nomes.length(); Uma outra maneira de declarar um vetor, é inicializando com os devidos valores: // Cria um vetor com 3 nomes já inicializados String[] nomes = new String[]{"Nome 1", "Nome 2", "Nome 3"}; // Ou pode usar a forma mais reduzida String[] nomes = {"Nome 1", "Nome 2", "Nome 3"}; Obs.: Vetores possuem tamanho fixo. Dessa forma só podem conter a quantidade informada no momento da criação. String[] nomes = new String[2]; nomes[0] = "Nome 1"; nomes[1] = "Nome 2"; // Isso vai lançar exceção pois o vetor não possui a terceira posição. nomes[2] = "Nome 3"; // Isso vale tanto para leitura, quanto para escrita. String terceiroNome = nomes[2];
  3. Dê uma olhada aqui: https://support.microsoft.com/pt-br/topic/mensagem-de-erro-stop-0x0000006b-process1-initialization-failed-código-de-erro-durante-a-inicialização-em-um-computador-que-esteja-executando-o-windows-7-ou-windows-server-2008-r2-3c948539-15ed-ee48-cb16-5fcb6012e79b Você está instalando o Windows 7 com SP1?
  4. Foi bem, deu quase tudo certo. Porém você mudou a estrutura do programa, por exemplo cadeia res deveria ter sido convertido para char res; Mas você declarou como sendo do tipo Scanner. O laço faca { [...] } enquanto(res == "s" ou res == "S") desapareceu do seu programa, e ele é importante para o fluxo correto. Ele deveria ter sido convertido para do { [...] } while(res == "s" ou res == "S") Os demais são erros de sintaxe, algumas chaves foram abertas onde não deveriam e fechadas nos lugares errados.
  5. Basicamente é só ir trocando os comando em português pelos equivalentes da linguagem. escreva = System.out.println inteiro = int real = double faca-enquanto = do-while leia = *use a classe Scanner cadeia = char funcao = *use a sintaxe de métodos do java programa = *use o nome da classe
  6. Recomendo esse curso, é de graça e de ótima qualidade: https://www.youtube.com/playlist?list=PL62G310vn6nFIsOCC0H-C2infYgwm8SWW.
  7. . O problema está no for, a condição i == numeroTotalMercadoria sempre é falsa, por isso o loop nunca é executado. Veja se isso ajuda: import javax.swing.JOptionPane; public class loja { public static void main(String[] args) { String entrada = ""; int quantidadeMercadorias = 0; double valorMercadoria = 0.0; double valorTotalEstoque = 0.0; double mediaValorMercadoria = 0.0; entrada = JOptionPane.showInputDialog("Informe a quantidade de mercadorias"); try { quantidadeMercadorias = Integer.parseInt(entrada); } catch(Exception ignored) { System.err.println("Entrada inválida."); return; } for (int i = 0; i < quantidadeMercadorias; i++) { entrada = JOptionPane.showInputDialog("Digite o valor da mercadoria [ " + (i + 1) + " de " + quantidadeMercadorias + "]"); try { valorMercadoria = Double.parseDouble(entrada); } catch(Exception ignored) { System.err.println("Entrada inválida."); --i; continue; } valorTotalEstoque += valorMercadoria; } mediaValorMercadoria = valorTotalEstoque / quantidadeMercadorias; JOptionPane.showMessageDialog( null, "Valor total: R$ " + valorTotalEstoque + "\n" + "Media: R$ " + mediaValorMercadoria ); } }
  8. Por que vocês não seguem essa abordagem? public class ProgramaPokemon { public static void main(String[] args) { Pokemon p1 = new Pokemon("Pikachu", Tipo.ELETRICO, 100, 20, 15); Pokemon p2 = new Pokemon("Bubassauro", Tipo.GRAMA, 100, 25, 17); System.out.println("Estado atual:"); System.out.println(p1); System.out.println(p2); System.out.println(p1.getNome() + " ataca " + p2.getNome()); p1.atacar(p2); System.out.println("Estado atual:"); System.out.println(p1); System.out.println(p2); System.out.println(p2.getNome() + " ataca " + p1.getNome()); p2.atacar(p1); System.out.println("Estado atual:"); System.out.println(p1); System.out.println(p2); } private enum Tipo { AGUA, ELETRICO, FANTASMA, FOGO, GRAMA, INSETO, NORMAL } private interface IAtaque { void atacar(Pokemon pokemon); } private static class Pokemon implements IAtaque { private String nome; private Tipo tipo; private int vida; private int ataque; private int defesa; public Pokemon(String nome, Tipo tipo, int vida, int ataque, int defesa) { this.nome = nome; this.tipo = tipo; this.vida = vida; this.ataque = ataque; this.defesa = defesa; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Tipo getTipo() { return tipo; } public void setTipo(Tipo tipo) { this.tipo = tipo; } public int getVida() { return vida; } public void setVida(int vida) { this.vida = vida; } public int getAtaque() { return ataque; } public void setAtaque(int ataque) { this.ataque = ataque; } public int getDefesa() { return defesa; } public void setDefesa(int defesa) { this.defesa = defesa; } @Override public void atacar(Pokemon alvo) { int dano = Math.max(0, ataque - alvo.defesa); alvo.vida -= dano; } @Override public String toString() { return "Pokemon{" + "nome='" + nome + '\'' + ", tipo=" + tipo + ", vida=" + vida + ", ataque=" + ataque + ", defesa=" + defesa + '}'; } } } Se quiserem aprender sobre Java, recomendo esse curso: https://www.youtube.com/playlist?list=PL62G310vn6nFIsOCC0H-C2infYgwm8SWW. É de graça e de alta qualidade.
  9. Nunca usei o Eclipse, mas parece que você tem que informar a pasta onde você instalou o JDK.
  10. Veja se isso te ajuda: package teste.leitorcsv; import java.io.IOException; import java.lang.reflect.Field; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Scanner; import java.util.StringJoiner; import java.util.random.RandomGenerator; import java.util.stream.Stream; public class LeitorCSVApp implements Runnable { private String converterObjetosParaString(List<ObjetoModelagem> objetos) { NumberFormat formatadorDecimal = NumberFormat.getInstance(); StringBuilder conteudo = new StringBuilder(); /* * Cria a linha de cabecalho automaticamente usando reflection para * obter o nome dos atributos declarados na classe ObjetoModelagem. */ StringJoiner cabecalho = new StringJoiner(";", "", ""); Stream.of(ObjetoModelagem.class.getDeclaredFields()) .map(Field::getName) .forEach(cabecalho::add); conteudo.append(cabecalho) .append(System.lineSeparator()); objetos.forEach(objeto -> conteudo.append(objeto.agencia) .append(";") .append(objeto.conta) .append(";") .append(formatadorDecimal.format(objeto.saldo)) .append(";") .append(objeto.status) .append(";") .append(objeto.algumaCoisa) .append(System.lineSeparator())); return conteudo.toString(); } private ObjetoModelagem criarObjetoAPartirDaLinhaCSV(String linha) { String[] valores = linha.split(";"); // Esta faltando informacao na linha, entao pulamos ela. if (valores.length != 4) return null; ObjetoModelagem objeto = new ObjetoModelagem(); objeto.agencia = valores[0]; objeto.conta = valores[1]; objeto.status = valores[3].charAt(0); /* * O scanner considera o locale na hora de converter string * para double. Ele automaticamente reconhecera se o valor * e separado por ponto ou por virgula. */ Scanner scanner = new Scanner(valores[2]); objeto.saldo = scanner.nextDouble(); return objeto; } private void escreverCSV(String conteudo, Path arquivo) { try { // Apaga os dados antigos Files.deleteIfExists(arquivo); // Escreve os novos dados criando o arquivo se necessario Files.writeString(arquivo, conteudo, StandardOpenOption.CREATE, StandardOpenOption.APPEND); } catch (IOException e) { e.printStackTrace(); } } private List<ObjetoModelagem> lerCSV(Path arquivo) { List<ObjetoModelagem> objetos = new ArrayList<>(); try { Files.readAllLines(arquivo) .stream() .skip(1) .map(this::criarObjetoAPartirDaLinhaCSV) .filter(Objects::nonNull) .forEach(objetos::add); } catch (IOException e) { e.printStackTrace(); } return objetos; } private void simularProcessamento(ObjetoModelagem objeto) { int valor = RandomGenerator.getDefault().nextInt(0, 100); objeto.algumaCoisa = valor % 2 == 0; } @Override public void run() { String caminho = "src/teste/leitorcsv/"; Path arquivoOrigem = Path.of(caminho + "origem.csv"); Path arquivoDestino = Path.of(caminho + "destino.csv"); List<ObjetoModelagem> objetos = lerCSV(arquivoOrigem); objetos.forEach(this::simularProcessamento); String conteudo = converterObjetosParaString(objetos); escreverCSV(conteudo, arquivoDestino); } private static class ObjetoModelagem { public String agencia; public String conta; public double saldo; public char status; public boolean algumaCoisa; public ObjetoModelagem() { } public ObjetoModelagem(String agencia, String conta, double saldo, char status) { this.agencia = agencia; this.conta = conta; this.saldo = saldo; this.status = status; } } } Está simplificado para facilitar o entendimento.
  11. Tenta passar uma borracha na memória e um limpa contato no slot da placa-mãe. Só toma cuidado porque tem que limpar bem o pente de memória, e tem que deixar o produto secar antes de montar. Se possível teste o pente de memória em outro notebook, só para ver se funciona.
  12. Isso aí é coisa da placa-mãe. Meu notebook é chato também quando eu mexo nas memórias. Vai tentando várias vezes, alternando entre os slots. Uma hora vai.
  13. Já ouvi dizer que memórias flash (cartões de memória, pendrive e SSDs), quando estão perto de morrer entram em um estado de "somente leitura". O suficiente para você fazer backup para outro dispositivo e jogá-lo fora. Provavelmente seu SSD está com o pé na cova, melhor salvar suas coisas e aposentá-lo.
  14. Não precisa criar tantos tópicos para o mesmo problema, isso dificulta para quem quer te ajudar. Esse problema está relacionado com o problema de persistência de dados que eu respondi no seu outro tópico.
  15. Os dados ficam armazenados na memória, quando o você fecha o programa, a memória é apagada. Se você quer salvar os dados de forma permanente, precisa persistir os dados de alguma forma. Você pode salvar os dados em um arquivo, ou em um banco de dados.
  16. Compensa mais formatar esse HD, assim garante que o dispositivo será totalmente limpo.
  17. Qual a sua dúvida? Comece criando as classes de modelagem. Essas classes são responsáveis por representar elementos do mundo real dentro do seu programa. Depois, comece desenvolver as regras de negócio. E por fim, crie uma camada para interagir com o usuário.
  18. Vish, não sei nada de javascript, achei que fosse Java. Acho que você vai ter mais sorte no setor de programação web aqui do fórum.
  19. Qual a versão do java você está usando?
  20. Algo assim não serve? String color = switch(innerHTML) { case "small" -> "verde"; case "medium" -> "castanho"; case "large" -> "vermelho"; default -> throw new RuntimeException("Valor inesperado: '" + innerHTML + "'"); }
  21. Você quer que a variável color receba o nome de uma cor baseando no conteúdo do innerHTML? Se for isso, um switch não serve?
  22. Vai no "Meu computador", botão direito no pendrive, clique em formatar e desmarque a "formatação rápida". Isso fará a formatação low-level.
  23. Confiável deve ser, só não sei se vale a pena usar. O Windows já tem essas funções nativamente para realizar formatação, tanto rápida, quanto completa.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!