7 votes

Toutes les valeurs possibles de int, de la plus petite à la plus grande, en utilisant Java

Écrire un programme pour imprimer toutes les valeurs possibles du type de données int, de la plus petite à la plus grande, en utilisant Java.

Quelques solutions notables au 8 mai 2009, 10:44 GMT :

1) Daniel Lew a été le premier à poster code fonctionnant correctement .

2) Kris a fourni la solution la plus simple pour le problème donné.

3) Tom Hawtin - tackline, est venu sans doute avec la solution la plus élégante .

4) mmyers a souligné que l'impression est susceptible de devenir un goulot d'étranglement et qu'il est nécessaire d'améliorer la qualité de l'impression. peut être améliorée par la mise en place de tampons .

5) Jay's approche par force brute est remarquable car, outre le fait qu'il défie le principe même de la programmation, le code source qui en résulte prend environ 128 Go et dépasse les limites des compilateurs.

Par ailleurs, je pense que les réponses montrent que cela pourrait être une bonne question d'entretien, tant que l'accent n'est pas mis sur la capacité à se souvenir de futilités sur le débordement du type de données et ses implications (qui peuvent être facilement repérées pendant les tests unitaires), ou sur la façon d'obtenir les limites MAX et MIN (qui peuvent être facilement recherchées dans la documentation), mais plutôt sur l'analyse des différentes façons de traiter le problème.

3voto

Chris Dodd Points 1990

Lorsque je me suis penché sur la question pour la première fois, ma première interrogation a été de savoir comment définir le plus petit et le plus grand. Pour ce qui me semblait être la définition la plus évidente ("le plus petit" = = "le plus proche de 0"), la réponse était la suivante

for (int i = 0; i >= 0; i++) {
    System.out.println(i);
    System.out.println(-i-1);
}

Mais tout le monde semble lire "smallest" comme "minimum" et "largest" comme "maximum

3voto

MrJacqes Points 305

Allez les amis, il est dit que l'on utilise Java. Il n'a pas dit d'utiliser un int dans la boucle for :-)

public class Silly {
  public static void main(String[] args) {
    for (long x = Integer.MIN_VALUE; x <= Integer.MAX_VALUE; x++) {
      System.out.println(x);
    }
  }
}

3voto

Peter Lawrey Points 229686

Une autre façon de passer en revue toutes les valeurs est d'utiliser le type int.

public static void main(String[] args) {
    int i = Integer.MIN_VALUE;
    do {
        System.out.println(i);
    } while (i++ < Integer.MAX_VALUE);
}

2voto

cd1 Points 2661

La valeur maximale de int est Integer.MAX_VALUE et le minimum est Integer.MIN_VALUE . Utilisez une boucle pour les imprimer tous.

2voto

Daniel Lew Points 39063

Au vu de l'aperçu des meilleures réponses, je me suis rendu compte que nous avions de sérieuses lacunes dans le domaine de la force brute. La réponse de Jay est sympathique, mais elle ne fonctionnera pas. Au nom de la science, je vous présente la gamme Bozo :

import java.util.Random;
import java.util.HashSet;

class Test {
    public static void main(String[] args) {
        Random rand = new Random();
        HashSet<Integer> found = new HashSet<Integer>();
        long range = Math.abs(Integer.MAX_VALUE - (long) Integer.MIN_VALUE);
        while (found.size() < range) {
            int n = rand.nextInt();
            if (!found.contains(n)) {
                found.add(n);
                System.out.println(n);
            }
        }
    }
}

Notez que vous devrez mettre de côté au moins 4 Go de mémoire vive pour exécuter ce programme. (Eventuellement 8 Go, si vous êtes sur une machine 64 bits, ce qui sera probablement nécessaire pour exécuter ce programme...). Cette analyse ne tient pas compte de la taille que la classe Integer ajoute à un int donné, ni de la taille du HashSet lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X