Ir ao conteúdo
  • Cadastre-se

XxCableXX

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Reputação

11
  1. Meu professor passou um trabalho sobre compiladores. Ele quer que eu faça um Analisador Léxico. Consegui fazer boa parte do código, mas não consigo mostrar o resultado. Sou iniciante em Java. Tô utilizando o Eclipse. O resultado que o Professor que quer apareça(Com qualquer resultado, não precisa ter uma entrada.) : Exemplo: Expressão: "8 + 8 = 16" Resultado: (O código vai analisar se essa entrada é correta, caso não esteja vai dizer error). Digito: 8 Operador: + Digito: 8 Igualdade: = Digito: 16 Meu código: package lexico; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Lexico { public static void main (String []args) { String code = "59-8=51"; int c = 0; Map<String, String> tokens = new HashMap<>(); tokens.put("[0-9]+", "[Digito:]"); tokens.put("[/+/-]+", "[Operador:]"); tokens.put("[/=]+", "[Igualdade: ]"); while(c < code.length()) { for(Map.Entry<String, String> entry : tokens.entrySet()) { Pattern verificador = Pattern.compile(entry.getKey()); Matcher ve = verificador.matcher(code); if(ve.find() && ve.start() == c) { System.out.println(entry.getValue() + ve.group()); c = c + ve.group().length(); } } } } } Resultado do meu código: (O resultado tem que sair na ordem das expressões).
  2. @r_Tray É uma plataforma que tem vários exercícios de programação. Nesse caso eu mandei meu código, esses números são os testes que seu código vai passar, para ser aprovado ele tem que está verde todos os testes. adicionado 2 minutos depois @Mateus Fernando @r_Tray Manos valeu pela ajuda, Estou grato. Faço Sistema da Informação Tô no 1º periodo kkk Ainda tô tentando aprender programar kk Obrigado por vcs ter ajudado.
  3. @r_Tray @Mateus Fernando Mano kkkkk Funcionou Uhuuu Scanner teclado = new Scanner(System.in); int dias = 0, km = 0; double diaria = 0, kmRodado = 0, diariaSoma = 0, diariaKm = 0, diariaTotal = 0; String formato = "###0.00" ; DecimalFormat d = new DecimalFormat(formato); do{ dias = teclado.nextInt(); } while (dias < 1 || dias > 31); do{ km = teclado.nextInt(); } while (km < 1 || km > 1000); diaria = dias * 30; kmRodado = km * 0.01; diariaSoma = (diaria+kmRodado); diariaKm = diariaSoma * 0.10; diariaTotal = diariaSoma-diariaKm; System.out.println(d.format(diariaTotal));
  4. Fiz outro código utilizando esse forma. Scanner teclado = new Scanner(System.in); int dias = 0, km = 0; double diaria = 0, kmRodado = 0, diariaSoma = 0, diariaKm = 0, diariaTotal = 0; do{ dias = teclado.nextInt(); } while (dias < 1 || dias > 31); do{ km = teclado.nextInt(); } while (km < 1 || km > 1000); diaria = dias * 30; kmRodado = km * 0.01; diariaSoma = (diaria+kmRodado); diariaKm = diariaSoma * 0.10; diariaTotal = diariaSoma-diariaKm; System.out.println(String.format("%.2f", diariaTotal)); } Dá erro adicionado 0 minutos depois adicionado 1 minuto depois adicionado 2 minutos depois @r_Tray Vou tentar aqui
  5. É vdd, valeu. No meu não tá mostrando a dica kk
  6. @r_Tray Entendi beleza, mas é que parte do colocar uma mensagem para usuário a plataforma não aceita.
  7. @r_Tray Não é que dá erro, é que ele passa por 30 verificações e na 23 e 30 dá erro, mas não dá um dica. Esse é o código que estou utilizando. Scanner teclado = new Scanner(System.in); DecimalFormat df = new DecimalFormat("0.##"); int dias, km; double diaria, kmRodado, diariaSoma, diariaKm, diariaTotal = 0; String dx = null; do{ dias = teclado.nextInt(); km = teclado.nextInt(); } while ((dias < 1 || dias > 30) && (km < 1 || km >1000)); diaria = dias * 30; kmRodado = km * 0.01; diariaSoma = (diaria+kmRodado); diariaKm = diariaSoma * 0.10; diariaTotal = diariaSoma-diariaKm; dx = df.format(diariaTotal); System.out.println(dx);
  8. beleza Vou testar aqui @Mateus Fernando valeu, tava pensando em usar while, mas fiquei em dúvida @underscore_case valeu pela dica.
  9. Tô em dúvida em uma questão no the huxley. Ainda sou iniciante, Tô aprendendo sobre java. Tentei Solucionar de duas maneiras, mas não consigo. Sempre dá dois erro, mas não consigo identificar. 1º Código import java.io.*; import java.util.*; import java.util.Scanner; public class HuxleyCode { public static void main(String args[]) { Scanner teclado = new Scanner(System.in); int dias, km; double diaria, kmRodado, diariaSoma, diariaKm, diariaTotal = 0; dias = teclado.nexInt(); km = teclado.nextInt(); if((dias >=1 && dias <= 30) && (km >= 1 && km <= 1000)){ diaria = dias * 30; kmRodado = km * 0.01; diariaSoma = (diaria+kmRodado); diariaKm = diariaSoma * 0.10; diariaTotal = diariaSoma-diariaKm; System.out.format("%.2f \n",diariaTotal); } else{ System.out.format("%.2f \n",diariaTotal); } 2º import java.io.*; import java.util.*; import java.text.DecimalFormat; import java.util.Scanner; public class HuxleyCode { public static void main(String args[]) { Scanner teclado = new Scanner(System.in); int dias, km; double diaria, kmRodado, diariaSoma, diariaKm, diariaTotal = 0; String dx = null; dias = teclado.nextInt(); km = teclado.nextInt(); if((dias >=1 && dias <= 30) && (km >= 1 && km <= 1000)){ diaria = dias * 30; kmRodado = km * 0.01; diariaSoma = (diaria+kmRodado); diariaKm = diariaSoma * 0.10; diariaTotal = diariaSoma-diariaKm; DecimalFormat df = new DecimalFormat("0.##"); dx = df.format(diariaTotal); System.out.println(dx); } else{ System.out.println(dx); } } }

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