• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

josevellozo

converter array do tipo string para inteiro

18 mensagens neste tópico

Boas. tenho um array do tipo string, mas preciso de o converter para inteiro. Alguem me pode dar uma ajudinha?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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);
        
    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

peço desculpa pela repetiçao mas nao consigo postar o programa correctamente...esta a aparecer com falhas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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);

       

    }

   

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem visto...mas agora da uma excepção. Como e que eu faço para a evitar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra o Stack trace da excepção, para ver melhor o problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora