Estou com uma dificuldade neste exercicio:
Recebe via parâmetro um número inteiro na faixa de 1 até 9(inclusive) (n1)e o segundo número inteiro positivo(n2). O método deve retornar o total de um números divisíveis por n1, na faixa de 1 até n2.
na minha abstração pensei da seguinte forma:
criação de duas variaveis
int n1 n2.
um comando Scanner para fazer a entrada dos dois numeros.
agora preciso criar uma estrutura de repetição que resolva a seguite situação para mim:
pegue n1 e veja se é de 1 a 9
e faça a divisão de n1 /1 e vai ate n2 dividindo.
pergunta, como faço isso?
Sua explicação ficou meia confusa
no começo vc diz que é pra verificar quais números são divisíveis por n1
depois já fala que tem q verificar se o n1 é divisivel por n2 (de 1 até n)
Mas pelo que entendi do que vc falou, faça o seguinte:
faça um if pra verificar se o numero é maior que 0, e menor que 10
Suponhamos que o valor do n2 também seja 9
dentro do if vc cria um for, sendo que o for executar até que o valor do contador seja menor que n2 (no caso do exemplo que estou citando, vai de 0 a 8, ou seja, 9 passagens)
dentro desse for vc cria um if, testando o resto da divisão entre n1 e (contador + 1), se o resto for 0, dai vc conta como sendo divisível
Mas por que (contador + 1)?
porque ele vai passar pelo intervalo de 1 ate 9
já que o for vai percorrer 9 vezes, de 0 ate 8, qnd vc coloca (contador + 1), vc irá ter os valores de 1 até 9
Espero que tenha ajudado!
Se essa nao for a ideia que você queria, peço desculpas
Nada cara pow muito obrigado, e bem assim que o meu professor escrevei!
estou fazendo a diciplina de orientação a objeto e não sei nada de java!
estou tentando quebrar a cabeça com isso valeu mesmo.
pensei praticamente a mesma coisa que voce escreveu
int n1/* é um intervalo de 1 a 9 /, n2/
* é o segundo numero inteiro
* positivo
/;
/
* este método deve retornar o total de números divisíveis por n1, na
* faixa de 1 até n2
*/
System.out.println("Entre com o primeiro numero");
n1 = scan.nextInt();
if(n1 >= 1 && n1 <= 9){
System.out.println("Entre com o segundo numero");
n2 = scan.nextInt();
}if (n2 > 0){
for(n1/1)
}
mas ainda estou muito enrolado!
hehehehehhe.
package lista02;
import java.util.Scanner;
public class Divisao {
Scanner scan = new Scanner(System.in);
int n1/* é um intervalo de 1 a 9 /, n2/
* é o segundo numero inteiro
* positivo
/;
/
* este método deve retornar o total de números divisíveis por n1, na
* faixa de 1 até n2
*/
System.out.println("Entre com o primeiro numero");
n1 = scan.nextInt();
if(n1 >= 1 && n1 <= 9){
System.out.println("Entre com o segundo numero");
n2 = scan.nextInt();
}if (n2 > 0){
for(n1/n2; n2-Divisao; n2--);
}
}
mas não esta dando certo! hehehehehe
mas vc tem que fazer o seguinte
Por exemplo, tem-se dois numeros inteiros, o primeiro (n1) valendo 8 e o segundo (n2) valendo 5
vc testa se está no intervalo que vc disse aí para executar ou não as ações, da seguinte forma:
if ((n1 > 0) && (n1 < 10)) { // ou entao n1 >= 1 e n1 <= 9 tanto faz
for (int i = 0; i < n2; i++) { // caso obedeça à condição do if anterior, irá executar esse for que vai de 0 até 4 (nesse exemplo que to citando), pq percorrerá 5 vezes
if (n1 % (i+1) == 0) { // aqui é o if que vai testar se o resto da divisão é zero, pq se for zero, quer dizer que o número é divisivel
contNumDivisiveis++; //pelo que vc falo, vc tem que contar quantos numeros são divisiveis, certo? então aki vc incrementa um contador pra isso
}
}
}
Até +
jvkirk
Cara desculpa minha ingnorancia mas o que é o “i” e o “%”???
o i é o contador do for, vc pode chamar de qualquer coisa: zohan, laranja, guitarra, neymar, santos
pq nesse for tem 3 partes, a inicialização do contador, o teste condicional (ou seja, ele vai executar enquanto esse teste for verdadeiro), e o incremento do contador (digo nesse for, pq tem otro tipo de for, mas q n tem nada a ver com o problema aqui)
Pense o seguinte
o i vai controlar o numero de execuções do for, sendo que o i vai ser incrementado a cada execução do for, portanto, o for vai executar as ações dentro dele enquanto a condição estiver sendo obedecida (i < n2)
no caso do exemplo que citei, o for será executado 5 vezes (pq foi o numero q citei de exemplo), entao o i vai percorrer de 0 ate 4 (5 vezes entao). Sendo assim, o for vai executar enquanto o i < n2.
Da uma estudada no for aí
quanto ao %, é o operador que vai pegar o resto da divisão entre dois numeros. Dai no if ali compara com 0 (n1 % (i+1) == 0) pra verificar se o resto da divisão é zero.
jvkirk
Oi, negresco.baixo.
O resto da divisão é calculado pelo %.
Se você quiser o resto da divisão entre o número 100 e 2, você vai fazer 100%2.
package lista02;
import java.util.Scanner;
public class Divisao {
Scanner ler = new Scanner(System.in);
int n1;
int n2;
/* n1 é um intervalo de 1 a 9 */
/* n2 é o segundo numero inteiro Positive */
/*
* este método deve retornar o total de números divisíveis por n1, na
* faixa de 1 até n2
*/
System.out.println("Entre com o Primeiro numero");
n1 = ler.nextInt();
System.out.println("Entre com o segundo numero");
n2 = ler.nextInt();
public Divisao(int Divisao)
{
int contNumDivisiveis;
if ((n1 > 0) && (n1 < 10)) { // ou entao n1 >= 1 e n1 <= 9 tanto faz
for (int i = 0; i < n2; i++) { // caso obedeça à condição do if anterior, irá executar esse for que vai de 0 até 4 (nesse exemplo que to citando), pq percorrerá 5 vezes
if (n1 % (i+1) == 0) { // aqui é o if que vai testar se o resto da divisão é zero, pq se for zero, quer dizer que o número é divisivel
contNumDivisiveis++; //pelo que vc falo, vc tem que contar quantos numeros são divisiveis, certo? então aki vc incrementa um contador pra isso
}
}
}
System.out.println(+Divisao);
}
}
[code]
porque no eclipse ta dando erro!
Este codigo acima não está correto?
Este é a classe principal
package lista02;
public class Exercicio1c {
public static void main(String[] args) {
Divisao D = new Divisao();
D.Divisao(0);
}
}
Bom, vamos lá
já que vc quer fazer uma classe Divisao, vamos analisá-la
essa parte de leitura de dados, faça na classe principal, lá que vai iniciar a execução, e qnd vc digitar os dados, eles devem ser passados para o método que irá dividir lá na classe Divisao
Portanto, qnd vc digitar os numeros, o q vc tem q fazer com eles? passar como argumento na chamada do método que irá dividir
Então logo após inserir os números, o método que divide deve ser chamado, e passado o n1 e o n2
por exemplo:
[code]import java.util.Scanner;
public class TestaDivisao {
public static void main(String[] args) {
int n1, n2;
Divisao d = new Divisao();
Scanner leitura = new Scanner(System.in);
System.out.println("Digite o primeiro numero: ");
n1 = leitura.nextInt();
System.out.println("Digite o segundo numero: ");
n2 = leitura.nextInt();
System.out.println ("Quantidade de numeros divisiveis: " + d.dividir (n1, n2)); //chama o método dividir da classe Divisao, e passa os numeros digitados como argumentos
}
}[/code]
Na classe Divisao, deve estar contido o método que irá dividir, sendo que ele terá como parâmetros 2 inteiros (pois você passou 2 inteiros na chamada do método), e tera a instrução que já te expliquei:
[code]public class Divisao {
public int dividir(int n1, int n2) { // os parâmetros recebem os valores passados
//o resto ja expliquei
int contNumDivisiveis = 0;
if ((n1 > 0) && (n1 < 10)) {
for (int i = 0; i < n2; i++) {
if (n1 % (i + 1) == 0) {
contNumDivisiveis++;
}
}
}
return contNumDivisiveis;
}
}[/code]
Enfim, ta aí
Espero q tenha entendido
jvkirk