2017-10-11 3 views
-5

J'ai essayé tout ce que je peux penser, mais rien ne fonctionne pour ce problème ...Entrez un entier et JUMP factoriel

invite l'utilisateur à saisir un entier n.

  • Si n est impair, alors calculer le saut-factoriel suivant: 1*3*5*7*…*n; Si n est pair, calculer le saut-factoriel suivant: 2*4*6*…*n; Si n est négatif ou nul, le résultat est 0.

Enfin, affichez le résultat.

import java.util.Scanner; 
public class problem10 { 
    public static void main(String[] args) { 

     // part 1: open scanner 
     Scanner sc = new Scanner(System.in); 

     // part 2: prompt user to enter a number 
     System.out.println("Please enter an integer: "); 
     double num = sc.nextDouble(); 

     // part 3: tell whether number is odd or even 
     for (int i=0; i>0; i+=2) { 
      if(i%2); 
     } 
    } 
} 

C'est tout ce que j'ai, mais je ne sais pas quoi faire pour dire si le nombre est encore parce que je ne peux pas utiliser entier ou double avec booléen.

+5

cela doit être le devoir de la journée quelque part –

+0

La condition de l'if ** doit ** évaluer à un booléen (vrai ou faux). Un modulo renvoie un nombre. Un nombre n'est pas un booléen – litelite

+2

Comment calculez-vous la factorielle de '7.3'? Ou demandé une autre façon: Pourquoi 'num' est-il un' double'? – Andreas

Répondre

0

Vous êtes mal compris l'utilisation de l'opérateur modulo:

i % 2 vous donnera le rappel de la division du i/2:

Si i est 5 et vous divisez par 2, le modulo sera 1, donc, il y a deux options:

  1. Sachez wether le nombre est pair ou impair par comparer le rappel contre une autre valeur

    • Même les chiffres ont un rappel de 0
    • Les nombres impairs ne

    Traduire que Java

  2. Comme indiqué ci-dessus par @Andreas, vous n'ont pas besoin de savoir s'ils sont pairs ou impairs, vous pouvez le faire de la façon suivante:

    Comptez de N à (le nombre le plus proche de 0 (c.-à-d. 1 ou 2 selon si N est pair ou impair))

    if (n > 0) { /*Do whatever you need to do here*/ } 
    

    if N <= 0 puis retour 0

C'est tout

0
import java.util.Scanner; 

public class problem10 { 

public static void main(String[] args) { 

// part 1: open scanner 
Scanner sc = new Scanner(System.in); 

// part 2: prompt user to enter a number 

System.out.println("Please enter an integer: "); 

int res = 1; 

int num = sc.nextInt(); 

// part 3: tell whether number is odd or even 

if(num <= 0) { // if number is negative or 0 

    res = 0; 
    System.out.println(""+res); 
    return; 
} 

if(num % 2 == 0) { // check for even 

    for (int i = 2; i <= num; i+=2) { 
     res *= i; 
    } 

    System.out.println(""+res); 
    return; 

}else{ // check for odd 
    for (int i = 1; i <= num; i++) { 
     res *= i; 
    } 

    System.out.println(""+res); 
    return; 

} 

} 

} 

J'ai modifié le code pour le faire fonctionner.

Les problèmes avec votre code sont les suivants:

  1. Vous n'avez pas vérifié si le numéro est pair ou impair ou nul

  2. Pour boucle dans votre code était inutile .. !!

Je veux vous recommander d'analyser cette solution et comprendre les erreurs que vous avez faites et les corriger. Je vous recommande également de mieux comprendre les boucles et la vérification des conditions en suivant quelques tutoriels en ligne et des sites de codage.

J'espère que cela vous aidera. !!

+0

S'il vous plaît ne leur donne pas le poisson, leur apprendre à pêcher – Frakcool

+0

Je lui ai montré ce qu'il faisait mal et comment le faire correctement .. Je pense que parler de quelque chose à quelqu'un qui a presque 0 expérience dans quelque chose n'est pas bénéfique pour lui. –

+0

Espérons qu'il apprenne ce que ses erreurs étaient et comment les corriger de la réponse que j'ai fournie –