`Je ne sais pas quel code insérer ou même où, mais je voudrais vérifier que le nombre que j'entre est un nombre impair.
import Java.io.*;
import javax.swing.JOptionPane;
public class Diamond {
public static void main(String [] args) throws IOException {
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));
String input;
int num;
System.out.println("input number: ");
input = stdin.readLine ();
num = Integer.parseInt(input);
if (num % 2 ==1){
int d = num;
int e = 0;
for (int a = 0; a <= num; a++) {
for (int c = d; c>= 1; c-- )
System.out.print(" ");
d-=1;
for (int b = 1; b <= a; b++)
System.out.print ("* ");
System.out.println();
}
num-=1;
for (int a = 0; a<=num; a++) {
for (int b = num; b > a; b--)
System.out.print (" *");
System.out.println();
for (int c = 0; c <= e; c++)
System.out.print(" ");
e+=1;
}
} else {
System.out.println("Please enter an odd number!");
}
}
}
Utilisez arithmétique modulaire :
if (number % 2 == 0) {
// even
} else {
// odd
}
Mettre à jour:
Vous pouvez tester ce code ici:
Attention, vérifier la régularité avec number % 2 == 1
échouera.
Pour vérifier si un nombre est impair, vous pouvez utiliser (number & 1) != 0
.
num% 2 == 1 renvoie des résultats incorrects sur un nombre impair négatif, le reste de la division avec 2 ne sera pas 1. Cela peut être résolu comme suit:
public boolean isOddNumber(int num) {
return (num & 1) != 0;
}
Vous ne pouvez PAS avoir readLine
à l'intérieur de ce if
. d'abord vous devez obtenir la valeur et ensuite vous pouvez utiliser votre if
.
Ça va comme ça:
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));
String input;
int num;
System.out.println("input number: ");
input = stdin.readLine();
num = Integer.parseInt(input);
if (num % 2 == 1) {
// odd
} else {
System.out.println("Please enter an odd number!");
}
Enfin - n'utilisez PAS de valeurs nommées "a", "e" ou "d" - c'est très déroutant. Nommez simplement les variables avec des noms qui permettent au lecteur de savoir/deviner leur rôle dans votre code. Je n'ai aucune idée de la signification de votre "a" ou b, c, d etc. Par exemple, votre num
devrait être nommé enteredValue
pour clarifier votre code.
La réponse de Chaker à propos de l'entier négatif est confirmée. Dans mon JavaSE-1.8
System.out.println( "result =" + ( -3 % 2 == 1) );
il montre result = false au lieu de true
Fonctionnement au niveau du bit (manipulation des bits) en Java
if ((num & 1) != 0) //odd
{
//do something here
} else { //even
//do something here
}
fonctionne en regardant disons 100 (numéro 4) vs 001, en faisant l'opération ET sur chaque bit et en retournant 0 et 1. Si le bit de fin est un 0, comme 4, il sera toujours pair. Si le bit de fin est 1, il va être étrange.