2010-10-31 9 views
0

Ok, donc ce programme essaie d'afficher le chiffre du milieu d'un nombre entier de 1 à 4 chiffres et s'il a un nombre pair de chiffres, il devrait afficher qu'il n'y a pas de chiffres moyens, mais je ne peux pas obtenir pour sortir la réponse correctement, voici le code:Problèmes de sortie dans le programme Java

public class digit { 
    public static void main(String[] arg) { 
     int MyInt1, MyInt2, MyInt3, MyInt4; 
     EasyReader keyboard = new EasyReader(); 
     // Get the 1-4 digit integer 
     int MyInt = keyboard.readInt("Enter your integer: "); 
     // Calculate the middle digit 
     MyInt1=MyInt/10; 
     if (MyInt1 < 1) { 
      System.out.print("The middle digit is: "); 
      System.out.println(MyInt); 
     MyInt2=MyInt1/10; 
     }else if (MyInt2 < 1) { 
      System.out.println("No middle digit"); 
     MyInt3=MyInt2/10; 
     }else if (MyInt3 < 1) { 
      System.out.print("The middle digit is: "); 
      System.out.println(MyInt2); 
     MyInt4=MyInt3/10; 
     }else if (MyInt4 < 1) { 
      System.out.println("No middle digit"); 
     } 
    } 
} 

J'importe également un paquet au début. Un exemple de sortie que j'obtiens est si j'entre 1234 comme l'entier que j'obtiens: '123412No chiffre moyen' comme ma réponse, je dois faire quelque chose de mal avec l'autre si je pense des déclarations mais je ne sais pas ce que c'est est. L'aide est appréciée, merci

Répondre

2

L'indentation ne définit pas ce qui est exécuté et ce qui n'est pas exécuté avec les instructions if.

Si vous ne répondez pas à la première condition, MyInt2 ne sera jamais défini, donc la condition suivante échouera également. Dans votre code d'origine, si MyInt1 < 1 est true, alors vous allez imprimer The middle digit is: et calculer la valeur de MyInt2. Si, toutefois, la condition est fausse, vous allez vérifier si MyInt2 < 1, mais MyInt2 n'est pas défini, car il est seulement calculé (dans votre code d'origine) lorsque la première condition est vraie.

Quelque chose comme cela devrait fonctionner:

// Calculate the middle digit 
MyInt1=MyInt/10; 
MyInt2=MyInt1/10; 
MyInt3=MyInt2/10; 
MyInt4=MyInt3/10; 
if (MyInt1 < 1) { 
    System.out.print("The middle digit is: "); 
    System.out.println(MyInt); 
}else if (MyInt2 < 1) { 
    System.out.println("No middle digit"); 
}else if (MyInt3 < 1) { 
    System.out.print("The middle digit is: "); 
    System.out.println(MyInt2); 
}else if (MyInt4 < 1) { 
    System.out.println("No middle digit"); 
} 
1
public class PrintMiddleDigit { 
    public static void main(String[] arg) { 
    EasyReader keyboard = new EasyReader(); 
    int number = keyboard.readInt("Enter your integer: "); 
    String str = String.valueOf(number); 
    if (str.length() % 2 == 0) { 
     System.out.println("No middle digit"); 
    } else { 
     int middle = str.length()/2; 
     System.out.print("The middle digit is: "); 
     System.out.println(str.charAt(middle)); 
    } 
    } 
} 

Quelques remarques:

  • Les noms de classe sont généralement écrits en UpperCamelCase, les noms de variables dans lowerCamelCase.
  • Le chiffre du milieu est plus facile à extraire de la chaîne qui représente le nombre.
  • L'expression str.length()/2 sera toujours arrondie vers zéro.
-1

Essayez ce code:

Scanner input = new Scanner(System.in); 

System.out.print("Give an integer number from 1 to 4 digits: "); 
String number = input.next(); 


switch(input.length()) 
{ 
    case 3: 
     System.out.println("The middle is " + input[1]); 
     break; 
    case 4: 
     System.out.println("The middles are " + input[1] + " " + input[2]); 
     break; 
    default: 
     System.out.println("You are inserted wrong number, there aren't middles"); 
} 
Questions connexes