josevellozo Posted April 18, 2009 at 04:20 PM Report #257504 Posted April 18, 2009 at 04:20 PM Boas. tenho um array do tipo string, mas preciso de o converter para inteiro. Alguem me pode dar uma ajudinha? http://be-actual.blogspot.com/
bruno1234 Posted April 18, 2009 at 04:26 PM Report #257505 Posted April 18, 2009 at 04:26 PM para isso tb precisas de converter o conteudo para inteiros, qq coisa do tipo: string[] strings = {"1", "2", "3"}; int[] ints = new int[strings.length]; for(int i = 0; i < strings.length; ++i){ ints[ i ] = Integer.ParseInt(strings[ i ]); } Cuidado q se o valor da string não der para fazer o Parse, vai lançar uma excepção, convém protegeres essa situação. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
josevellozo Posted April 18, 2009 at 04:30 PM Author Report #257508 Posted April 18, 2009 at 04:30 PM obrigado http://be-actual.blogspot.com/
josevellozo Posted April 18, 2009 at 05:04 PM Author Report #257512 Posted April 18, 2009 at 05:04 PM esta a dar erros...O que eu quero e o seguinte: um programa que peça ao utilizador que este introduza uma serie de numeros. tambem a quantidade de numeros e definida pelo utilizador. o programa deverá devolver o maximo e o minimo da serie. Abaixo deixo o meu programa. se alguem me poder ajudar fico agradecido. Peço desculpa mas sou mesmo um iniciante em java... import javax.swing.JOptionPane; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Este programa exemplifica o ciclo for, calculando o maximo e o minimo de uma serie de valores"); String[] valores; valores=new String [100]; String quantos; int Max,min,qts,i; Max=1; min=1000; quantos=JOptionPane.showInputDialog("Quantos valores pretende avaliar?"); qts=Integer.parseInt(quantos); for(i=1;i<=qts;i++) { valores[i]=JOptionPane.showInputDialog(null,"Introduza o "+i+"º valor"); int[]vals=new int [valores.length]; for(int z = 0; z < valores.length; ++z) { vals[z] = Integer.ParseInt(valores[z]);//erro } if (vals[i]>Max) vals[i]=Max; if (vals[i]<min) min=vals[i]; } JOptionPane.showMessageDialog(null,"O máximo é "+Max+" e o mínimo é "+min); } } http://be-actual.blogspot.com/
josevellozo Posted April 18, 2009 at 05:05 PM Author Report #257513 Posted April 18, 2009 at 05:05 PM peço desculpa pela repetiçao mas nao consigo postar o programa correctamente...esta a aparecer com falhas http://be-actual.blogspot.com/
bruno1234 Posted April 18, 2009 at 05:06 PM Report #257514 Posted April 18, 2009 at 05:06 PM tens q separar [ i ] senão aparece itálico O java é case sensitive, o método é parseInt e não ParseInt. Enganei-me por estar habituado a trabalhar com C# em q a convenção é primeira letra maiuscula, o q é diferente do java. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
josevellozo Posted April 18, 2009 at 05:10 PM Author Report #257518 Posted April 18, 2009 at 05:10 PM entao deve ser isto import javax.swing.JOptionPane; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Este programa exemplifica o ciclo for, calculando o maximo e o minimo de uma serie de valores"); String[] valores; valores=new String [100]; String quantos; int Max,min,qts,i; Max=1; min=1000; quantos=JOptionPane.showInputDialog("Quantos valores pretende avaliar?"); qts=Integer.parseInt(quantos); for(i=1;i<=qts;i++) { valores[ i ]=JOptionPane.showInputDialog(null,"Introduza o "+ i +"º valor"); int[]vals=new int [valores.length]; for(int z = 0; z < valores.length; ++z) { vals[ z ] = Integer.ParseInt(valores[ z ]); } if (vals[ i ]>Max) vals[ i ]=Max; if (vals[ i ]<min) min=vals[ i ]; } JOptionPane.showMessageDialog(null,"O máximo é "+Max+" e o mínimo é "+min); } } http://be-actual.blogspot.com/
josevellozo Posted April 18, 2009 at 05:13 PM Author Report #257521 Posted April 18, 2009 at 05:13 PM bem visto...mas agora da uma excepção. Como e que eu faço para a evitar? http://be-actual.blogspot.com/
bruno1234 Posted April 18, 2009 at 05:15 PM Report #257522 Posted April 18, 2009 at 05:15 PM Mostra o Stack trace da excepção, para ver melhor o problema. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
josevellozo Posted April 18, 2009 at 05:16 PM Author Report #257525 Posted April 18, 2009 at 05:16 PM estas a falar disto? Exception in thread "main" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:415) at java.lang.Integer.parseInt(Integer.java:497) at trabalho_for_bp.Main.main(Main.java:35) Java Result: 1 BUILD SUCCESSFUL (total time: 9 seconds) http://be-actual.blogspot.com/
bruno1234 Posted April 18, 2009 at 05:20 PM Report #257527 Posted April 18, 2009 at 05:20 PM Sim, mostra também o conteudo do valores[ z ] linha a linha, mete system.out.println(valores[ z ].ToString() ) e comenta a linha do parse int, para ver só o q ele está a tentar fazer parse Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
josevellozo Posted April 18, 2009 at 05:26 PM Author Report #257528 Posted April 18, 2009 at 05:26 PM assim da isto: Exception in thread "main" java.lang.NullPointerException at trabalho_for_bp.Main.main(Main.java:36) Java Result: 1 BUILD SUCCESSFUL (total time: 8 seconds) apartida eu nao preencho o array com nenhum valor, apenas declaro o seu tamanho. se calhar tou a cometer um erro mesmo como em c++ não havia problema.... http://be-actual.blogspot.com/
josevellozo Posted April 18, 2009 at 05:33 PM Author Report #257529 Posted April 18, 2009 at 05:33 PM era mesmo por nao preencher o array. no entanto, não me devolve o maximo e o minimo. por exemplo, como eu preenchi todas as posições do array com 1, o programa devolve m o o maximo e minimo como 1 http://be-actual.blogspot.com/
Knitter Posted April 18, 2009 at 05:35 PM Report #257530 Posted April 18, 2009 at 05:35 PM Bem, vejo pelo menos duas falhas, uma o ciclo externo começa em 1 e o interno começa em 0, pelo que o utilizador introduz o primeiro valor na posição 1 do array e a 0 está vazia, e estás a declarar dentro do ciclo interno várias vezes a mesma variável que julgo não ser o que pretendes. Quanto ao NullPointerException, pelo que consigo ver está tudo correcto, o código que estás a usar é igual ao que tens aqui colocado? Se estás a usar um IDE, não há nada mais simples que fazer uma operação de debug, coloca um breakpoint na linha que te dá erro e verifica em modo debug o que se está a passar, é simples de fazer e ajuda bastante. Acho que o algoritmo que tens não faz o que pretendes.
josevellozo Posted April 18, 2009 at 05:40 PM Author Report #257532 Posted April 18, 2009 at 05:40 PM ja passei o 0 para 1. a parte de calcular o maximo e o minimo foi inspirada num programa em c++ que funcionava. em java sou muito iniciante http://be-actual.blogspot.com/
Knitter Posted April 18, 2009 at 05:46 PM Report #257533 Posted April 18, 2009 at 05:46 PM Só pegando nesta parte: if (vals[ i ]>Max) vals[ i ]=Max; O Max, que na verdade se devia chamar "max", atenção às regras de código em Java, inicia com o valor 1, se eu introduzir o valor 5, então vals[ i ] vai ser maior que Max, logo vais colocar o vals[ i ] que era 5 a 1, mas nada fazes ao Max. Nem aqui nem em outra parte do código, quando chegas ao fim o valor de Max nunca mudou.
KiNgPiTo Posted April 18, 2009 at 05:46 PM Report #257534 Posted April 18, 2009 at 05:46 PM O teu problema poderá estar no ciclo for que está dentro do outro... Estás a correr o array com x>1 posições onde só lá tens uma... atribuis a 1ª, e a segunda é nula e causa a excepção...
josevellozo Posted April 18, 2009 at 05:55 PM Author Report #257536 Posted April 18, 2009 at 05:55 PM sou mesmo nabo...nao reparei que tinha que por Max=vals[ i ]; e nao o contrário! deste modo o programa funciona correctamente! Muito obrigado pela ajuda 😄 http://be-actual.blogspot.com/
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now