[RESOLVIDO]Quebrar String com números separados por " "(esp.) e guardar em um vetor do tipo int

Galera, estou tentando fazer um programa que pegue números de uma String através do getText() e salve em um vetor do tipo int, para que depois eu possa realizar operações com os números nas posições. Não estou conseguindo! Meu código está assim (considere que todas as variaveis foram declaradas):

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
            String string = jTextField1.getText();
            String[] nums = string.split(" ");
            
            
            while(nums[i]!=null){
                 numi[i] = Integer.parseInt(nums[i]);
                 i++;
            }

            for(int j=0; j<10; j++){
                numi[j] = Integer.parseInt(nums[j]);
                jTextField2.setText(jTextField2.getText()+numi[j]+" "); //mostrando os números do vetor
            }
}

Não sei mais o que faço! Alguma ideia ou algum outro código?

mas o que você quer fazer ? e qual erro esta ocorrendo ?

da maneira que você colocou parece que vai mostrar a mesma coisa do JTextField1…10 50 80 70…etc…

chute: você quer somar ??

Java != C

No seu caso, troque:

while(nums[i]!=null){  
                 numi[i] = Integer.parseInt(nums[i]);  
                 i++;  
            } 

por

for (int i = 0; i < nums.length; ++i) {
     ...
}

Evite usar “while” com incremento de índice. Não deixa seu programa mais rápido e é mais complicado de entender. Se quiser, use um for com várias condições de continuação (estou dando um exemplo abaixo, mas obviamente não é a solução do seu problema acima) :

for (int i = 0; i < nums.length || nums[i] != null; ++i) {
}

A operação matemática eu sei fazer. Botei aquela saída ali para testar se está sendo construído o vetor numi[].
Minha dificuldade é somente quebrar a String e colocar os números no vetor. Por exemplo, entro no campo de texto os valores “20 30 40 50 60” separados por espaço. Quero quebrar os números e fazer o seguinte.

numi[0]= 20
numi[1] = 30
numi[2] = 40
numi[3] = 50
numi[4] = 60

Apenas isso. Preciso apenas esse códio porque o resto eu sei fazr

Você instanciou o vetor “numi”??

E como o entanglement disse, não use while.

Instanciei o numi no main:

public static void main(String args[]) {

        int numi[]= new int[10];

...

E qual o erro?

Dica: Não instancie com um número fixo igual você fez. No seu caso use o tamanho do vetor nums. Algo do tipo:

 int[] numi = new int[nums.length];

[quote=denisvilela]Instanciei o numi no main:

[code]
public static void main(String args[]) {

    int numi[]= new int[10];


[/code][/quote]

Oi,

É melhor instancia o numi assim:

int numi[]= new int[nums.length];

Tchauzin!

     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        string = jTextField1.getText();
        nums = string.split(" ");
                
        for(int i=0; i<nums.length || nums[i]!=null; i++){
            numi[i] = Integer.parseInt(nums[i]);
            jTextField2.setText(jTextField2.getText()+numi[i]+" ");
        }
    } 

...

O código continua a não escrever nada na saída e está dando erro nessa declaração (non-static variable nums cannot be referenced from a static context):

    public static void main(String args[]) {

        int numi[]= new int[nums.length];

...
  1. Por que é que você ainda está usando a comparação com null? Eu só dei um exemplo do que pode ser feito, não que isso iria resolver seu problema.
  2. Você pode deixar uma variável declarada mas deixar a criação do objeto (array) que vai ser usado com essa variável para depois. Você pode fazer algo como:
...
int numi[]; // neste ponto ele não tem nada, tome cuidado porque ele só vai ter alguma coisa mais tarde.
...
string = jTextField1.getText();  
        nums = string.split(" ");  // note que split não deixa nenhum elemento vazio (== null), portanto não precisa testar contra null
        // agora você sabe qual é o tamanho certo de nums, portanto você sabe o tamanho de numi.
        numi = new int[nums.length];
                  
        for(int i=0; i<nums.length; i++){  
            numi[i] = Integer.parseInt(nums[i]);  
            jTextField2.setText(jTextField2.getText()+numi[i]+" ");  
        }  
    }   
  

DEU CERTO! Valeu entaglement!! Valeu galera!