Calculer les nombres négatifs dans un tableau
J'étais à la recherche de solution pour trouver les nombres négatifs dans la gamme et je suis venu avec quelque chose comme ce code à partir de la recherche.
public static void main(String args[]){
int arrayNumbers[] = { 3, 4, 7, -3, -2};
for (int i = 0; i <= arrayNumbers.length; i++){
int negativeCount = 0;
if (arrayNumbers[i] >= 0){
negativeCount++;
}
System.out.println(negativeCount);
}
}
Je me demandais est-il plus facile ou le plus court chemin pour trouver le numéro de négatif dans un tableau vs le code ci-dessus?
- C'est en comptant les
>= 0
, pas les nombres négatifs. - Ce code va générer un en dehors des limites de l'exception en raison de la condition d'arrêt dans le
for
. - Qui code l'habitude de compiler à tous, vous ne pouvez pas accéder negativeCount en dehors de la boucle for.
- Donc, il ya un moyen plus court. 😉
- Vous devez mettre
int negativeCount = 0;
avant la boucle. Sinon, le compteur est initialisé à0
à chaque itération - Éventuellement, un moyen plus efficace consiste à vérifier la valeur chaque fois que vous ajoutez/définir un élément de tableau, et de maintenir le nombre obtenu au cours de l'tableaux de durée de vie. De cette façon, vous ne serait jamais à regarder le tableau dans son ensemble, en comptant les nombres négatifs-vous de toujours savoir comment de nombreux aspects négatifs que vous avez mis là jusqu'à présent.
- Il n'existe aucun moyen en java pour ce faire.
- d'accord, à condition que le tableau est initialisé comme illustré. Si elle est remplie "par code", vous pouvez incrémenter le "négatif" de comptage lors de l'ajout et de décrémentation lors de la suppression d'un négatif int/à partir de la matrice. (Je suppose que l'OP utilise l'initialisation de tableau de garder la question simple, mais en réalité, utilise un algorithme pour construire le contenu en tant que non-constante, c'est à dire avec code).
- De quoi parles-tu? Précisément comment pouvez-vous "incrémenter le négatif comte" lors de l'ajout/suppression d'éléments d'un tableau?
- Comme ceci: Si vous avez une méthode qui définit un elems valeur dans le tableau, puis dans cette méthode, vous pouvez inspecter la valeur, et incrémenter un mondial int variable (ou le domaine) negativeCount par une si la valeur est négative. Ensuite, vous n'auriez pas à recalculer le nombre de négatifs lateron. (int negativeCount aurait besoin d'être initialisé à zéro et propertly maintenue, bien sûr.). Je ne crois pas que les valeurs dans le tableau proviennent de l'initialiseur de tableau dans les tableaux de déclaration à l'OPs code réel.
Vous devez vous connecter pour publier un commentaire.
Un java 7 basé sur des chaînes de one-liner qui compte le moins de signes:
Java 8 en fonction de flux moyen:
Au sujet de votre code, il y a quelques choses qui cloche avec elle:
number < 0
(votre code>= 0
compte non les nombres négatifs)Essayez ceci:
Quelques problèmes avec le code:
for
va produire un dehors des limites de l'exception (des tableaux utilisation d'index de base zéro)negativeCount
est à l'intérieur de lafor
seulementUne version légèrement plus courte serait d'utiliser l'étendue
for
:Pour une version plus courte (mais sans doute moins lisible) éliminer la
for
's{}
:Votre negativeCount doit être déclarée à l'extérieur de votre boucle.. Aussi, vous pouvez déplacer votre
System.out.println(negativeCount)
à l'extérieur de votre boucle, telle qu'elle sera imprimée pour chaque itération..Et vous pouvez utiliser amélioré pour boucle
Integer
ici,int
travaille avec des tableauxUn peu plus courte avec la syntaxe foreach: