Ir ao conteúdo
  • Cadastre-se

Jvsierra

Membro Pleno
  • Posts

    24
  • Cadastrado em

  • Última visita

  1. O código completo ficou assim: package projects; import java.util.Scanner; public class Projects { public static void main(String[] args) { char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray(); Scanner scanner = new Scanner(System.in); String palavraLida = ""; System.out.println("Digite a palavra que você quer criptografar:"); palavraLida = scanner.nextLine(); System.out.println("Digite a chave para o processo (0 - 25)"); int chaveString = scanner.nextInt(); char[] palavraGerada = new char[palavraLida.length()]; int index = 0; if(chaveString <= 25 && chaveString >=0){ for (int i = 0; i < palavraLida.length(); i++) { if (palavraLida.toCharArray()[i] == ' ') { palavraGerada[i] = '#'; // Se for um espaco, cria uma hashtag na string de saída }else{ //Se não for, checa de acordo com o alfabeto for (int j = 0; j < palavraLida.length(); j++) { if (palavraLida.toCharArray()[i] == alphabet[j]) { if (j + chaveString > 25) { palavraGerada[i] = alphabet[(j + chaveString) - 26]; } else { palavraGerada[i] = alphabet[j + chaveString]; } } } } } }else{ System.out.println("Chave inválida.\n"); } System.out.println(palavraGerada); } }
  2. Eu troquei e acontece um erro semelhante: for (int j = 0; j < palavraLida.length(); j++) { if (palavraLida.toCharArray()[i] == alphabet[j]) { index = j + chaveString; if(index >= 26){ index = index - 26; } palavraGerada[i] = alphabet[index];//Grava na array de saída de acordo com a variável correspondente } } Algumas letras criptografam, outras não...
  3. Eu estou fazendo um programa para criptografar de acordo com a Cifra de César, em Java. Eu me deparei com o seguinte problema no código: package projects; import java.util.Scanner; public class Projects { public static void main(String[] args) { char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray(); Scanner scanner = new Scanner(System.in); String palavraLida = ""; System.out.println("Digite a palavra que você quer criptografar:"); palavraLida = scanner.nextLine(); System.out.println("Digite a chave para o processo (0 - 25)"); int chaveString = scanner.nextInt(); char[] palavraGerada = new char[palavraLida.length()]; int index = 0; if(chaveString <= 25 && chaveString >=0){ for (int i = 0; i < palavraLida.length(); i++) { if (palavraLida.toCharArray()[i] == ' ') { palavraGerada[i] = '#'; // Se for um espaco, cria uma hashtag na string de saída }else{ //Se não for, checa de acordo com o alfabeto for (int j = 0; j < palavraLida.length(); j++) { if (palavraGerada[i] == alphabet[j]) { index = j + chaveString; if(index >= 26){ index = index - 26; } palavraGerada[i] = alphabet[index];//Grava na array de saída de acordo com a variável correspondente } } } } }else{ System.out.println("Chave inválida.\n"); } System.out.println(palavraGerada); } } A primeira checagem do loop FOR (que checa se o caractere é um espaço), funciona corretamente). Já, no else, para caracteres que não são um espaço, não funciona corretamente, já que no array de saída não fica gravado o caractere correspondente Exemplo de execução do programa:
  4. Eu mudei o código para: case 3: media = (float) 1 / ((1 / numA) + (1 / numB) + (1 / numC)); printf("A media harmonica desses numeros e: %f\n", media); break; Daí, ele não dá mais o erro. Só que ele retorna um valor estranho:
  5. Olá a todos. Eu fiz um exercício em C que pede para calcular alguns tipos de média, entre elas a média harmônica. Só que, ao executar o programa e selecionar a opção da média harmônica, o programa se fecha automaticamente. Usei o Code::Blocks e o GNU GCC para compilar o código. #include <stdio.h> #include <math.h> int main() { int numA, numB, numC = 0; printf("Digite o primeiro numero inteiro positivo: \n"); scanf("%d", &numA); printf("Digite o segundo numero inteiro positivo: \n"); scanf("%d", &numB); printf("Digite o terceiro numero inteiro positivo: \n"); scanf("%d", &numC); if (numA < 0 || numB < 0 || numC < 0) { printf("voce digitou algum numero invalido. \n"); }else{ int escolha, media = 0; printf("Digite o tipo de media que voce quer calcular: \n"); printf("1 - Geometrica\n"); printf("2 - Ponderada\n"); printf("3 - Harmonica\n"); printf("4 - Aritmetica\n"); scanf("%d", &escolha); switch (escolha) { case 1: media = cbrt(numA * numB * numC); printf("A media geometrica desses numeros e: %d\n", media); break; case 2: media = (numA + (numB * 2) + (numC * 3)) / 6; printf("A media ponderada desses numeros e: %d\n", media); break; case 3: media = 1 / ((1 / numA) + (1 / numB) + (1 / numC)); printf("A media harmonica desses numeros e: %d\n", media); break; case 4: media = (numA + numB + numC) / 3; printf("A media aritmetica desses numeros e: %d\n", media); break; default: printf("Opção invalida.\n"); } } return 0; } Alguém sabe por que o programa fecha ao selecionar a terceira opção? Desde já, obrigado.
  6. O problema é que, em vez de usar "System.out.printf", você usou "System.out.println". Quando for usar operadores para a formatação de variáveis como double ou float, como o "%d", use o método do "System.out.printf" Como está: System.out.println("RESULTADO SOMA %d",soma); Como deveria estar: System.out.printf("RESULTADO SOMA %d",soma); Código completo, teste se funciona package aula3;public class Aula3{public static void main(String[] args){ int num1 = 2; int num2 = 8; int soma; soma=num1+num2; System.out.printf("RESULTADO SOMA %d",soma);}}
  7. Fala aí, galera Eu queria saber como, em uma String, como por exemplo, "x=5", pegar apenas o que não seja número dela, ou seja, o "x=". Desde já, muito obrigado
  8. Muito obrigado, cara, usei split da seguinte maneira: import java.util.Scanner;public class Splits { public static void main(String[] args) { Scanner ent = new Scanner(System.in); String op, op2; String token; double numero = 0; String[] tokens; while(true){ System.out.println("->"); op = ent.nextLine(); if (op.startsWith("adicao")) { System.out.println("Digite os numeros: "); op2 = ent.nextLine(); tokens = op2.split(" "); double[] numeros = new double[tokens.length]; for (int i = 0; i < tokens.length; i++) { token = tokens[i]; numeros[i] = Double.parseDouble(token); } for (int i = 0; i < tokens.length; i++) { numero+=numeros[i]; } System.out.println(numero); } } }} Meio gambiarra, mas tá funcionando! Muito obrigado.
  9. Eu estou criando um programa que faz algumas operações matemáticas. Para agilizar o processo de escolha da operação, eu pensei em algo mais ou menos assim: adicao 2, 2Resultado: 4 Ou seja, o usuário digita a operação, os números que quer calcular, então o programa calcula. Para identificar a operação, eu fiz o seguinte: String op = new String(); Scanner ent = new Scanner(System.in); System.out.println("Operacao: "); op = ent.nextLine(); if(op.startsWith("adicao")){ // } Identificar a operação é fácil, mas, como eu faço para identificar os números envolvidos? Desde já, muito obrigado ;D

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