Ir ao conteúdo

AdrianoSiqueira

Membro Pleno
  • Posts

    1.273
  • Cadastrado em

  • Última visita

Tudo que AdrianoSiqueira postou

  1. Não sei se faz sentido, mas acho que faltam espaços no comando SQL para separar as palavras reservadas dos nomes da tabela e dos dados.
  2. A mensagem está dizendo que o código SQL está errado.
  3. Tentou assim? textField.setText(String.valueOf(123)); Isso deve converter o 123 para "123" e setar no campo. PS.: Troque textField pela sua variável de campo de texto e 123 pela sua variável numérica. Se preferir, poste seu código fonte e a gente analisa para ver se tem algum problema.
  4. Seria possível você testar com outro computador na mesma rede que está dando esse problema? Ou vice-versa, usar o seu computador em uma rede diferente?
  5. Muito estranho. Você já passou um antivírus para ver se não tem nada te "trolando"?
  6. Por favor, informe: Qual o sistema operacional? x32 ou x64? Qual o navegador e a versão dele? Tentou com outro navegador? Há espaço livre no seu HD? Esse é um problema estranho, pode ser um bug no navegador, um erro no lado do servidor, uma instabilidade na conexão com a internet, etc.
  7. Sem o código fonte vai ser difícil. Se tiver vários arquivos, poste a pasta src.
  8. Peça para o usuário informar esse dado, ou então tente pegar a data atual do sistema e converte essa data para dias.
  9. Pessoalmente eu não compraria agora, os preços estão super faturados e muita coisa está em falta. Se não for urgente, recomendo esperar um pouco. Até porque parece que teremos boas novidades em breve.
  10. Lembro de ter feito algo semelhante em Java um tempo atrás. A finalidade do código é diferente, mas o princípio é o mesmo: converter um valor em notas de dinheiro. Pode usar ela como base de raciocínio. O código em si até pode ser portado para C, mas vai ter que alterar a lógica. A classe pode ser encontrada no github.
  11. Como o tópico foi marcado como resolvido, vou deixar uma outra possível solução: #include <stdio.h> #include <stdlib.h> #define QTD_NOTAS 5 #define QTD_SURFISTAS 3 typedef struct { char nome[100]; int notas[QTD_NOTAS]; double media; } Surfista; void calcularMedias(Surfista *surfistas); int compararIntCrescente(const void *a, const void *b); int compararDoubleDecrescente(const void *a, const void *b); void imprimirRanking(Surfista *surfistas); int main() { Surfista surfistas[QTD_SURFISTAS] = { (Surfista) {"Surfista 1", {5, 7, 3, 4, 5}, 0.0}, (Surfista) {"Surfista 2", {1, 9, 10, 4, 5}, 0.0}, (Surfista) {"Surfista 3", {0, 9, 4, 2, 3}, 0.0} }; calcularMedias(surfistas); // Ordena os surfistas por media decrescente qsort(surfistas, QTD_SURFISTAS, sizeof(Surfista), compararDoubleDecrescente); imprimirRanking(surfistas); return EXIT_SUCCESS; } void calcularMedias(Surfista *surfistas) { if (surfistas == NULL) return; for (int i = 0; i < QTD_SURFISTAS; ++i) { // Ordena as notas qsort(surfistas[i].notas, QTD_NOTAS, sizeof(int), compararIntCrescente); // O loop ignora a primeira e ultima posicao for (int j = 1; j < QTD_NOTAS - 1; ++j) { surfistas[i].media += surfistas[i].notas[j]; } // Ignora as duas notas que nao foram somadas surfistas[i].media /= QTD_NOTAS - 2; } } int compararIntCrescente(const void *a, const void *b) { int *i1 = (int *) a; int *i2 = (int *) b; if (i1 < i2) { return -1; } else if (i1 > i2) { return 1; } else { return 0; } } int compararDoubleDecrescente(const void *a, const void *b) { Surfista *s1 = (Surfista *) a; Surfista *s2 = (Surfista *) b; if (s1->media < s2->media) { return 1; } else if (s1->media > s2->media) { return -1; } else { return 0; } } void imprimirRanking(Surfista *surfistas) { if (surfistas == NULL) return; printf("Ranking: \n"); for (int i = 0; i < QTD_SURFISTAS; ++i) { printf("Surfista {"); printf("nome: %s, ", surfistas[i].nome); printf("notas: ["); for (int j = 0; j < QTD_NOTAS; ++j) { printf("%2i", surfistas[i].notas[j]); if (j + 1 < QTD_NOTAS) printf(", "); } printf("], "); printf("media: %.2f", surfistas[i].media); printf("} \n"); } }
  12. Posta o código da sua classe responsável pela conexão, lembrando que é necessário ter o driver do MySQL.
  13. Segue em anexo uma possível solução. Coloque o pacote observador dentro da sua pasta src. observador.zip
  14. Use um algoritmo de ordenação, o mais simples que conheço é o BubbleSort.
  15. Cria os dois vetores e preencha-os. Crie o terceiro vetor com o tamanho somado dos dois primeiros. Copie os valores do primeiro e do segundo para o terceiro. Ordene o terceiro de forma decrescente (use algum algoritmo de ordenação). Imprima.
  16. Acho que é verdade, pois ela trabalha menos. Além da questão de temperatura, você tem ganhos de energia (economia). Além disso, dependendo da placa e da taxa de fps, ela pode ficar com folga de desempenho, o que aumenta a estabilidade.
  17. Não sei usar Callable, mas se quiser usar Thread, pode fazer assim: package copiador; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Objects; public class Copiador implements Runnable { private Path arquivoOrigem; private Path pastaDestino; private int copias; public Copiador(Path arquivoOrigem, Path pastaDestino, int copias) { this.arquivoOrigem = Objects.requireNonNull(arquivoOrigem, "O arquivo de origem não pode ser null."); this.pastaDestino = Objects.requireNonNull(pastaDestino, "A pasta de destino não pode ser null."); this.copias = Math.abs(copias); } @Override public void run() { if (Files.notExists(arquivoOrigem)) { throw new IllegalArgumentException("O arquivo de origem não foi encontrado."); } try { if (Files.notExists(pastaDestino)) { Files.createDirectories(pastaDestino); } for (int i = 1; i <= copias; i++) { String sufixo = "_".concat(String.valueOf(i)); StringBuilder nomeDestino = new StringBuilder(arquivoOrigem.getFileName().toString()); nomeDestino.insert(nomeDestino.lastIndexOf("."), sufixo); Path arquivoDestino = pastaDestino.resolve(nomeDestino.toString()); Files.copy(arquivoOrigem, arquivoDestino, StandardCopyOption.REPLACE_EXISTING); } } catch (IOException e) { e.printStackTrace(); } } } package copiador; import java.nio.file.Path; import java.nio.file.Paths; public class CopiadorTest { public static void main(String[] args) { Path arquivo = Paths.get(""); // Arquivo que será copiado Path pasta = Paths.get(""); // Pasta de destino int copias = 10; // Quantidade de cópias Copiador copiador = new Copiador(arquivo, pasta, copias); Thread thread = new Thread(copiador); thread.start(); System.exit(0); } }
  18. Algumas observações: É sempre bom adicionar uma camada de segurança para o caso de o usuário entrar com um valor inválido. No caso, eu implementei para ignorar aquela iteração e reiniciar o loop. Para calcular a média, é necessário armazenar a quantidade de valores inseridos, bem como a somatória dos mesmos. O teste lógico para determinar se um número é par ou ímpar é um teste binário, ou seja, ou é par, ou é ímpar, sendo assim, não é necessário recalcular a sobra da divisão por 2. Um simples if-else já resolve. Lembrando que esse teste é independente do teste para saber se é maior ou igual a 100, portanto os testes devem ser feitos com ifs separados. O teste para saber se a entrada é maior que 0 não é adequada, pois a condição de parada é quando a entrada for igual a 0, dessa forma qualquer coisa que seja diferente de 0 deverá ser considerada válida. A média deve ser calculada fora do loop, quando já temos a somatória e a quantidade de valores. Lembrando que deve-se considerar a possibilidade de que não foi digitado nenhum valor, nesse caso não tem como calcular a média, e a mesma deve ser setada para 0. import javax.swing.*; public class ExercicioRepeticao { public static void main(String[] args) { int numero; int pares = 0; int impares = 0; int maior100 = 0; int quantidade = 0; double media = 0.0; do { try { numero = Integer.parseInt( JOptionPane.showInputDialog( null, "<html>Informe um número: <br><i>(0 interrompe)</i></html>" ) ); } catch (NumberFormatException e) { /* * Se a entrada for inválida, ignora a iteração. O número deve * ser setado para um valor diferente de 0 para não encerrar o * programa. */ numero = 1; continue; } if (numero == 0) { // Condição de parada continue; } if (numero >= 100) { maior100 += 1; } if (numero % 2 == 0) { pares += 1; } else { impares += 1; } quantidade += 1; media += numero; } while (numero != 0); media = (quantidade != 0) ? media / quantidade : 0.0; JOptionPane.showMessageDialog(null, "<html> Resultado final " + "<br>-----------------------" + "<br>Somatória dos números: " + quantidade + "<br>Números ímpares: " + impares + "<br>Números pares: " + pares + "<br>Números maiores que 100: " + maior100 + "<br>Média: " + media + "</html>"); System.exit(0); } }
  19. Para o que você quer fazer, precisa de um banco de dados, onde fica salvo as informações dos motoristas e do administrador.
  20. Usa esse código na classe da sua interface de cadastro. Cria o vetor na classe que vai chamar a interface de cadastro e passa esse vetor para o construtor da interface de cadastro.
  21. Você criou o vetor dentro da interface gráfica, não está recebendo ele pelo construtor. Desse jeito, a hora que você fechar a interface de cadastro, vai perder todos os registros.
  22. Do jeito que eu mostrei na classe Principal do exemplo que eu postei.
  23. Se navega normalmente, mas o ícone não está de acordo, parece ser bug no Windows.
  24. Tenta dessa forma: public class NovoMotorista extends javax.swing.JFrame { private Motorista[] motoristas; private int i; public NovoMotorista (Motorista[] motoristas) { this.motoristas = Objects.requiresNonNull(motoristas, "O vetor não pode ser null."); this.i = 0; initComponents(); } private void botaoCadastrarActionPerformed(java.awt.event.ActionEvent evt) { motoristas[i] = new Motorista(); motoristas[i].setSenhaMotorista(senhaMotoristaText.getText()); motoristas[i].setNomeMotorista(nomeMotoristaText.getText()); motoristas[i].setUsuarioMotorista(usuarioMotoristaText.getText()); motoristas[i].setCPFmotorista(cpfMotoristaText.getText()); motoristas[i].setCNHmotorista(cnhMotoristaText.getText()); System.out.println(motoristas[i]); i++; } public Motorista[] getMotoristas() { return motoristas; }

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...