Jump to content

converter array do tipo string para inteiro


Recommended Posts

Posted

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

Posted

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

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

       

    }

   

}

Posted

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

Posted

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.

Posted

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.

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.