Comment obtenir la valeur de l'Entier.MAX_VALUE en Java sans l'aide de la classe Integer
J'ai cette question qui a complètement perplexe moi.
J'ai créer une variable qui est égale à un Entier.MAX_VALUE... (en Java)
//The answer must contain balanced parentesis
public class Exercise{
public static void main(String [] arg){
[???]
assert (Integer.MAX_VALUE==i);
}
}
Le problème est que le code source ne peut pas contenir les mots "Integer", "Float", "Double" ou des chiffres (0 - 9).
Quoi? Je ne comprends pas...
Il suffit de ne
Je pense que ça peut contenir
int i = Integer.MAX_VALUE;
? Ou il suffit de regarder la source: @Native public static final int MAX_VALUE = 0x7fffffff;
Il suffit de ne
int i = Integer.MAX_VALUE
.The issue is that the answer cannot contain: "Integer", "Float", "Double", and digits (0 - 9)
Je pense que ça peut contenir
int
(au lieu de Integer
) ensuite.OriginalL'auteur madsword19 | 2014-04-06
Vous devez vous connecter pour publier un commentaire.
Voici une succincte de la méthode:
Cela fonctionne parce que le max valeur de nombre entier en binaire est tout, sauf le haut (signe) bits, qui est à zéro. Mais -1 en deux compliment binaire est tout, donc, par le décalage de bits -1 d'un bit vers la droite, vous obtenez la valeur max.
OriginalL'auteur Bohemian
Comme d'autres l'ont dit.
est ce que vous voulez.
Entier.MAX_VALUE, est une "constante statique" à l'intérieur de la "classe wrapper" Entier qui est tout simplement la valeur de max. De nombreuses classes ont des constantes statiques qui sont utiles.
Integer
! Mais merci pour la lecture 🙂Oups! J'ai complètement raté la (seule et la plus importante) contrainte
OriginalL'auteur Hypothetical inthe Clavicle
Voici une solution:
ou il y a beaucoup de variantes.
(L'astuce que vous avez été absent est de savoir comment "créer" une valeur entière sans l'aide d'un littéral numérique ou un numéro de classe wrapper. Une fois que vous avez créé
ONE
, le reste est simple ...)Désolé, mais je dois le faire pour les droits de vantardise... voir ma version 🙂
OriginalL'auteur Stephen C
Un peu en retard, mais voilà:
Comment ai-je fait? :p
Je n'aime que bitshift bien...
OriginalL'auteur slyaer
Il y a d'autres choses en Java, ce qui peut être représenté comme une
Integer
, par exemple unchar
:Vous pouvez également ajouter des caractères ainsi de cette manière:
Avec cette information, vous devriez être en mesure de travailler sur comment se rendre à
2147483647
sur votre propre.OriginalL'auteur MrLore
OK, donc un Entier ne peut prendre que certaines valeurs. C'est à partir de MIN_VALUE à MAX_VALUE où la valeur minimale est négatif.
Si vous augmentez un entier passé cette limite supérieure de la valeur s'enroule autour, et de devenir la plus faible valeur possible. par exemple, MAX_VALUE+1 = MIN_VALUE.
De même, si vous réduisez un entier passé la limite inférieure, il s'enroule autour, et de devenir la plus grande valeur possible. par exemple, MIN_VALUE-1 = MAX_VALUE.
Donc un programme simple qui instancie un int, décrémente jusqu'à ce qu'elle s'enroule autour et retourne cette valeur devrait vous donner la même valeur que
Integer.MAX_VALUE
OriginalL'auteur Críostóir Ó Catháin