O codigo não escreve nada no leitor

import java.util.Scanner;
public class exjava{
public static void main(String[] args) {
divisores();
}
public static int divisores () {
Scanner scanner = new Scanner(System.in);
System.out.print(“Digite o numero:”);
int n = scanner.nextInt();
int divisores = 0;
int i = 1;
while ( i <= n ) {
if ( n % i == 0 )
divisores = divisores + 1;
i = i + 1;
}
System.out.println(“O numero " +n+ " tem " +divisores +” divisores.");
}
}
O codigo não escreve nada no leitor

Ele não escreve nada pois está preso no loop do while e o método deve ser do tipo void e não int já que ele não retorna nada

package application;

import java.util.Scanner;

public class Prog2 {

public static void main(String[] args) {
	divisores();
}

public static void divisores () {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite o numero:");
int n = scanner.nextInt();
int divisores = 0;
int i = 1;

while ( i <= n ) {
if ( n % i == 0 ) {
divisores = divisores + 1;

}
i = i + 1;

}
System.out.println("O numero " +n+ " tem " +divisores +" divisores.");

}
}

1 curtida

Ah ok obrigado,uma questão se deixar o public static int divisores(){

E fizer return divisores;
O programa dá ou tenho que fazer mais algo???

Você pode sim fazer um return de “divisores”,apenas terá que criar uma variável que irá armazenar o que for retornar.Mas ainda assim podem ocorrer erros no programa já que a parte de entrada de dados está dentro do método.Um melhor jeito de resolver isso seria:

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	System.out.print("Digite o numero:");
	int n = scanner.nextInt();

	int divisores = divisores(n); // passando o número que é informado pelo usuário para o método e guardando ele em uma variável de nome "divisores" também

	System.out.println("O numero " + n + " tem " + divisores + " divisor(es).");
}

public static int divisores(int n) {
	int divisores = 0;
	int i = 1;
	while (i <= n) {
		if (n % i == 0) {
			divisores++;
		}
		i++; // operador de incremento,o mesmo que usar i = i + 1;
	}
	return divisores;

}
1 curtida

Obrigado!!