Hier mittleren Zahl in eine Ganzzahl in Java

Habe ich einen integer in java "1234567" und mein Programm findet der mittleren Ziffer in einer Reihe von integer -, ist es mehr optimiert als unter code?. Vor kurzem fragte, in java interview.

Was ich gemacht habe, ist zunächst keine Ziffern, ersten, letzten und mittleren Indizes. Dann finden Sie mitten in Ziffer wieder überarbeiten, gleiche ganze Zahl. Bitte um Rat, einige Optimierungen.

int a1 = 1234567;
int a = a1;

//calculate length
int noOfDigits = 0;
while(a!=0)
{
   a = a/10;
   noOfDigits++;
}

int first = 0;
int last = noOfDigits-1;
int middle = (first+last)/2;

boolean midExists = ((a1%2)==1);
System.out.println(" digits: "+a1);
System.out.println(" no of digits "+noOfDigits);
System.out.println(" first "+first);
System.out.println(" last " + last);

if(midExists)
{
   System.out.println(" middle " + middle);
   int i = last;
   int middleDigit = 0;
   a = a1;
   while(i != middle)
   {
     a = (a / 10);
     middleDigit = (a%10);
     i--;
   }
   System.out.println("middle digit: " + middleDigit);
 }
 else
   System.out.println(" Mid not Exists.. ");

Programm-Ausgabe:

digits: 1234567
no of digits 7
first 0
last 6
middle 3
middle digit: 4
  • was ist mit dem char length/2-1??
  • int numberOfDigits = String.valueOf(a1).length(); statt der while-Schleife
  • Würde ich konvertieren String-und die bekommen in der Mitte der Zeichenfolge.
  • Ich habe zu tun, die ohne die Verwendung von Sprache-Methoden wie length () oder die Konvertierung in array oder string
  • Anmerkung: Sie brauchen nicht first. int middle = last/2;
  • Für das Protokoll: ich umformuliert ersten Absatz hinweisen, der einen trick, die möglich ist, um Ihren code zu vereinfachen. Aber das funktioniert nur im Fall, dass Sie erlaubt sind zu verwenden Math.log10() für diese Aufgabe.
  • Vielen Dank für diese erklärende Antworten 🙂 Verstanden, andere Dinge als die wichtigste Voraussetzung für meine Frage 🙂 Entschuldigung für nicht zu erwähnen, dass die Sprache, die Methoden sind nicht erlaubt 🙂
  • Sie sind sehr willkommen. Und hey, Sie erreichte 100 heute. Herzlichen Glückwunsch 😉

Schreibe einen Kommentar