0
votes

Comment supprimer le dernier astérisque de la sortie générée par une boucle?

import java.util.*;
public class factorial {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
      Scanner sc=new Scanner(System.in);
      System.out.println("Enter a number");
      int n=sc.nextInt();
        long fact=1;
        System.out.println("Calculations: ");
        for(long i=1;i<=n;i++)
        {
            fact=fact*i;
            System.out.print(i+" ");
            System.out.print("*");
        }
        System.out.print("\nThe factorial is: "+fact);
    }

}
this is my code for the factorial program, when i print this..i get something like this 
Enter a number
4
Calculations: 
1 *2 *3 *4 *
The factorial is: 24can anyone tell me how to remove that additional "*" from output

2 commentaires

Vous voulez donc que votre boucle imprime * uniquement si (ce n'est pas la dernière itération) . Comment nous pouvons vérifier si c'est la dernière itération? Avons-nous des variables que nous pouvons utiliser pour le déterminer?


Depuis la multiplication par 1 n'est pas nécessaire, imprimez le 1 et démarrez la boucle avec 2 Impression du * avant le le numéro est imprimé


5 Réponses :


1
votes
for(long i=1;i<=n;i++) {
    fact=fact*i;
    System.out.print(i+" ");
    if(i!=n)
        System.out.print("*");
}

0 commentaires

0
votes

On n'a pas accès au tampon de la ligne System.out, d'où la solution doit s'emporter qu'il n'y a pas d'astérisque supplémentaire:

    for (long i = 1; i <= n; i++) {
        if (i != 1) {
            System.out.print(" * ");
        }
        fact *= i;
        System.out.print(i);
    }
    System.out.println();


1 commentaires

@ user85421 Vous avez raison, après avoir tapé que cela m'a déjà irrité. Je voulais dire ce que j'ai écrit maintenant. Merci, apprécié



0
votes

code mis à jour - Vous devez vérifier si (i! = n) xxx


0 commentaires

0
votes
public class factorial {

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter a number");
    int n=sc.nextInt();
    long fact=1;
    System.out.println("Calculations: ");
    for(long i=1;i<=n;i++)
    {
      fact=fact*i;
      System.out.print(i+" ");
      if(i<n) {
        System.out.print("*");
      }
    }
    System.out.print("\nThe factorial is: "+fact);
  }

}

0 commentaires

0
votes

le faire comme suit:

for (long i = 1; i <= n; i++) {
    fact = fact * i;
    if (i < n) {
        System.out.print(i + " * ");
    } else {
        System.out.print(i);
    }
}


0 commentaires