Erro na estrutura Do While Java

Pessoal, a questão pede que o usuário digite vários números e será encerrado quando ele digitar “n” para não continuar. O problema é que a estrutura Do While não está aceitando a condição while (resp==‘s’); sendo resp a variável tipo char . Segue o código…
<package questoesguanabara;
import java.util.Scanner;

/**
*

  • @author Andre
    */
    public class NewClassQuestaoSessentaTres {
    public static void main(String[] args) {
    System.out.println("Informe um número: ");
    Scanner in = new Scanner(System.in);
    int num = in.nextInt();
    int menor=0;
    menor=num;
    float media =0;
    media=num;
    int par=0;
    int cont=1;
    float media_tot=0;
    int soma=0;
    if(num%2==0){
    par=1;
    }

     do { 
         System.out.println("Quer continuar? [s/n]");
         char resp = in.nextLine().charAt(0);
         soma=soma+num; 
         if(num<menor){
          menor=num;   
         }
           if(resp=='s'){
             System.out.println("Informe um número:");
            num= in.nextInt();
         }
            media=(media+num);
            cont++;
            if(num%2==0) { 
               par=par+1;
     } 
              
     } while(resp=='s');
      media_tot=(media/cont);
      System.out.println("O somatorio entre todos os valores é:" + soma);
     System.out.println("O menor numero eh:" + menor);
     System.out.println("A media dos valores eh: " + media_tot);
     System.out.println("A quantidade de numeros pares eh: " + par);>
    

Alguem poderia me ajudar ?

Seu resp não está acessível do {} while (booleano)
Você precisa mover a variável para fora do bloco do-while

char resp = 'x';
Faz {
                      resp = in.nextLine (). charAt (0);
                     ..
               } enquanto (resp == 's'); // agora está acessível

Qualquer variável declarada em um bloco, só é acessível nesse bloco
  int x = 1;
{
   int a = 0;
    // a e x estão disponíveis aqui
}
// apenas x está disponível aqui
1 curtida

Verifiquei seu código e há outro problema.
Você precisa engolir o enter após chamar o método nextInt ().
Caso contrário, seu código com lança uma exceção.

code below

import java.util.Scanner;

/**
 *
 * Pessoal, a questão pede que o usuário digite vários números e será encerrado
 * quando ele digitar “n” para não continuar. O problema é que a estrutura Do
 * While não está aceitando a condição while (resp==‘s’); sendo resp a variável
 * tipo char . Segue o código… <package questoesguanabara; import
 * java.util.Scanner;
 * 
 * 
 * 
 * @author Andre
 */
public class NewClassQuestaoSessentaTres {

	public static void main(String[] args) {
		System.out.println("Informe um número: ");
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		in.nextLine(); // add to swallow enter
		int menor = 0;
		menor = num;
		float media = 0;
		media = num;
		int par = 0;
		int cont = 1;
		float media_tot = 0;
		int soma = 0;
		if (num % 2 == 0) {
			par = 1;
		}
		char resp = 's';
		do {
			System.out.println("Quer continuar? [s/n]");
			String value =  in.nextLine();
			resp = value.charAt(0);
			soma = soma + num;
			if (num < menor) {
				menor = num;
			}
			if (resp == 's') {
				System.out.println("Informe um número:");
				num = in.nextInt();
				in.nextLine(); // add to swallow enter
			}
			media = (media + num);
			cont++;
			if (num % 2 == 0) {
				par = par + 1;
			}

		} while (resp == 's');
		media_tot = (media / cont);
		System.out.println("O somatorio entre todos os valores é:" + soma);
		System.out.println("O menor numero eh:" + menor);
		System.out.println("A media dos valores eh: " + media_tot);
		System.out.println("A quantidade de numeros pares eh: " + par);

	}

}
1 curtida

Obrigado João, funcionou aqui !!