How to retrieve a previous value entered by the user?

1

I'm not able to retrieve a value typed in beforehand by the user.

The program asks to enter notes and the end is indicated by the entry of number -1;

public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        ArrayList<Integer> notas = new ArrayList<>();

        System.out.println("Entre com notas de 0 a 10");
        int num = 0; // criei essa variavel para fazer as instruçoes ficarem em loop ate o usuario digitar o -1 

        while(num != -1){ 

            notas.add(s.nextInt()); //aqui armazena o primeiro valor digitado

            if(s.nextInt() == -1){ // nesta linha eu sei que que esta pegando o segundo valor digitado e se caso ele seja -1, atribuo o valor -1 a num, saindo assim do loop
                num = -1;
            }else{ //caso o valor nao seja -1 vai adicionar no ArrayList
                notas.add(s.nextInt()); //aqui esta o problema, eu nao consigo adicionar o valor anterior que foi comparado no if
                }
        }

        System.out.println(notas.toString());

    }
    
asked by anonymous 30.06.2016 / 23:16

2 answers

1

One solution might be this:

Scanner s = new Scanner(System.in);
ArrayList<Integer> notas = new ArrayList<>();
System.out.println("Entre com notas de 0 a 10");
while (num != -1) { 
    int num = s.nextInt() //armazena em variável para poder usar onde quiser
    if (num != -1) {
        notas.add(num);
    }
}
System.out.println(notas.toString());

The main function of a variable is to store a value for later use. Saving variable is fine, but when it is needed, you have to create and store the value you want to use later. So solve the main question the question. But in fact the variable already created can be used for this and neither create an extra. Besides this your code does not do what you expect, so I've changed logic.

    
30.06.2016 / 23:22
0

Just do this:

int temp = s.nextInt();
if(temp == -1){
   num = -1;
}else{ //caso o valor nao seja -1 vai adicionar no ArrayList
  notas.add(temp); //pega o ultimo valor digitado
}
    
30.06.2016 / 23:22