Posts
Explique o problema em si. � pra identificar o maior n�mero em um vetor? Entre dois n�meros? Ou seja, qual � o problema?
Ler 3 ou mais numeros e informar quem � o maior...depois tento desenrolar o resto. obrigada.
Nesse caso, sendo a quantidade de n�meros fixa e baixa, compensa mais utilizar alguns IFs (n�o ser�o muitos). Se forem mais n�meros, principalmente se for uma quantidade indefinida, a� seria mais interessante usar um array.
Segue o c�digo que captura o maior n�mero digitado: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class MaiorNumero { /** * @param args * @throws IOException * @throws NumberFormatException */ public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader rd = new BufferedReader(new InputStreamReader(System.in)); List<Integer> numeros = new ArrayList<Integer>(); int n = -1; do{ System.out.print("Digite o n�mero (-1 para mostrar o maior n�mero): "); n = Integer.parseInt(rd.readLine()); if (n == -1){ System.out.println("Maior numero �: "+retornaMaiorValor(numeros)); }else{ numeros.add(n); } }while(n != -1); } public static int retornaMaiorValor(List<Integer> numeros){ int aux = 0; for (int i = 0; i < numeros.size(); i ++){ if (numeros.get(i) > aux){ aux = numeros.get(i); } } return aux; } }
Funcionou legal...apartir dai a logica � a mesma para mostrar tambem o menor numero digitado?
Sim, o �nico local que voc� vai mudar � aqui: if (numeros.get(i) < aux){ aux = numeros.get(i); } Colocando o sinal de "<" (menor).
pronto, � s� renomear a variavel? encontrei um exemplo, me diz o que acha dele: if (numero1 > numero2 && numero1 > numero3 ||numero1 > numero3 && numero1 > numero2 ){ System.out.print("o primeiro numero: " + numero1 +" � o numero maior dos 3\n"); } se fosse utilizar seria com varios if�s.
pronto, � s� renomear a variavel? encontrei um exemplo, me diz o que acha dele: if (numero1 > numero2 && numero1 > numero3 ||numero1 > numero3 && numero1 > numero2 ){ System.out.print("o primeiro numero: " + numero1 +" � o numero maior dos 3\n"); } se fosse utilizar seria com varios if�s. Este � exemplo � limitado. Se voc� tiver 100 valores ? Vai fazer 100 ifs ?o que ti passei serve para 2 valores ou 1 milh�o de valores.
Pensando bem � isso mesmo, mas se for um exemplo simples, com poucos numeros. a melhor op��o � o if que citou?
Continuo dizendo que n�o. Sempre trabalhe em solu��es gen�ricas, a forma que voc� apresentou n�o � otimizada de tiver mais que 5 valores, se for apenas 2 ou 3 ent�o voc� pode usar sua solu��o.
As vezes me confundo com essa forma otimizada, sempre o codigo mais "curto" � melhor, tem como saber se a otimiza��o � valida atraves do debbug?
As vezes me confundo com essa forma otimizada, sempre o codigo mais "curto" � melhor, tem como saber se a otimiza��o � valida atraves do debbug? "Sempre o c�digo mais curto � melhor". Essa afirma��o n�o confere. C�digo curto n�o � sin�nimo de otimiza��o e nunca ser�, prova disso � que algoritmos de ordena��es mais complexos como o HEAP SORT s�o muito melhores que um INSERTION SORT que � bem mais simples e "curto". Voc� sabe se seu algoritmo � otimizado (melhor que um outro ou executa em tempo h�bil) atrav�s do c�lculo de complexidade do algoritmo, estude o pior caso, melhor caso e caso m�dio do seu algoritmo e categorize o desempenho como logaritm�ntico, exponencial e etc.Estude isso: http://pt.wikipedia.org/wiki/Complexidade_computacional
Na "m�o" mesmo � que sabemos se est� bom? legal Ronaldo, pensei que pudesse ser visualizado com ajuda de algo. obrigada pela dica.
Na "m�o" mesmo � que sabemos se est� bom? legal Ronaldo, pensei que pudesse ser visualizado com ajuda de algo. obrigada pela dica. UP!!! perguntinha...
Na "m�o" mesmo � que sabemos se est� bom? legal Ronaldo, pensei que pudesse ser visualizado com ajuda de algo. obrigada pela dica. Voc� tem que fazer testes de performance, medindo o tempo de execu��o dos algoritmos. Levando em considera��o que existem varia��es: Melhor Caso, Pior Caso e Caso M�dio. Em Java , valores inteiros podem ser armazenados e representado em duas maneiras . Você pode armazenar números inteiros como tipo primitivo " ints ", em que apenas Java armazena o valor numérico. Alternativamente, você pode usar objetos de "Integer " , que armazenam o valor numérico usando uma referência de objeto Java. Independentemente do tipo de número inteiro seu programa usa , você pode comparar valores inteiros facilmente usando algumas linhas de código. Um teste condicional é a maneira mais comum para comparar números inteiros em Java, o que lhe permite adaptar o desempenho do seu programa para os resultados de tais comparações. Instruções Criar dois " inteiros " tipo primitivo em seu programa Java. Use o seguinte código para criar dois inteiros com nomes e valores arbitrários para fins de demonstração : int anInt = 3; int anotherInt = 5; Quando você declara um inteiro desta forma, tudo o que você precisa fornecer é um nome eo valor numérico que você deseja que a variável para armazenar . Compare os números inteiros. Adicione o seguinte código , que compara os dois inteiros tipo primitivo e escreve uma mensagem relatando os resultados no console de saída padrão : if ( anInt < anotherInt ) System.out.println (" anInt é menor do que anotherInt "); else if ( anInt > anotherInt ) System.out.println (" anInt é maior do que anotherInt "); mais System.out.println (" anInt é igual a anotherInt "); primeiros testes de linha se o primeiro número inteiro é menor do que o segundo. Se esse teste retorna um resultado falso , o processamento se move para o próximo teste para ver se o primeiro é maior que o segundo , se um falso resultado é retornado , o programa assume que os dois são iguais. Para testar a igualdade , você pode usar o seguinte : if ( anInt == anotherInt ) System.out.println (" ints são iguais "); criar dois " inteiros " objetos em seu programa. Use o seguinte código para criar dois objetos para armazenar seus valores inteiros : Integer anInteger = new Integer (10); Integer anotherInteger = Integer.valueOf (6); Este código demonstra as duas maneiras possíveis para criar um objeto " Integer " , ambas as quais envolvem fornecendo o valor numérico que você deseja representar . Compare seus objetos "Integer " . Usando o código a seguir , compare os inteiros representados como objetos : int comparisonResult = anInteger.compareTo ( anotherInteger ); O método " compareTo " da classe " Integer ", compara um valor inteiro para outro , retornando um tipo primitivo "int" como resultado. Se o primeiro inteiro ( a um método está a ser chamada ) é maior , o valor de uma for devolvido . Se o primeiro inteiro é menor, o valor de um negativo é devolvido . Se os números inteiros são iguais, um valor zero é retornado. Verifique o resultado de sua operação " compareTo " . Use o seguinte código para testar e saída de seus resultados de comparação : if ( comparisonResult > 0) System.out.println (" anInteger é maior do que anotherInteger " ) ; else if ( comparisonResult < 0) System.out.println (" anInteger é menor do que anotherInteger "); mais System.out.println (" anInteger é igual a anotherInteger "); Experiência com seu código mudar os valores de cada número inteiro, em seguida, compilar e executar para ver a saída . |