Ziffer in der Mitte ausgeben

Px10

Mitglied
Hi, ich möchte gerne eine Methode erstellen, in der ich von einer Zahl die mittlere Ziffer ausgebe.
z.B.:
3 -> 3
13 -> 1
123456 -> 3
1234567 -> 4
555596666-> 9
(also quasi die mittlere, oder die mittlere linke Ziffer)

Dabei soll es egal sein wie lang die Zahl ist. Ich habe es mit Zahl / 100 und % 100 usw versucht, jedoch klappt es nicht, da nicht alle Zahlen gleich lang sind.
Bin noch Anfänger und freue mich auf eure Tipps/Lösungen.
 
X

Xyz1

Gast
Hier mal etwas Rekursives, das passt bestimmt:
Java:
	public static void mid(String l, String m, String r) {
		if (l.length() <= r.length()) {
			System.out.println(m);
		} else {
			r += m;
			m = String.valueOf(l.charAt(0));
			l = l.substring(1);
			mid(l, m, r);
		}
	}

	// TEST
	public static void main(String[] args) {
		mid("", "", "");
		mid("1", "", "");
		mid("1234", "", "");
		mid("12345", "", "");
	}
 

Robat

Top Contributor
Wenn man es ohne String machen möchte dann so:
Java:
public class MyClass {
     public static void main(String []args){
        for(int number : new int[]{3, 13, 123456, 1234567, 555596666 }) {
         System.out.println(number + " -> " + getMiddleNumber(number));
        }
     }
     
     private static int getMiddleNumber(int number) {
         int length = (int) (Math.log10(number) + 1);
         int offset = (int) Math.pow(10, length / 2);
         return (number / offset ) % 10;
     }
}
 

Px10

Mitglied
Erstmal danke. Ich habe es bei Java eingefügt, an sich passt alles. Nur wollte im Fall 1234 die 2 ausgeben also die linkere Zahl in der Mitte :D
 

Px10

Mitglied
Eine Frage hätte ich da noch undzwar was passiert bei (Math.log10(number) +1) ? Zb bei 55559666, rechnet er den logarithmus davon aber wieso +1?
 

Px10

Mitglied
Der Logarithmus zur Basis 10 auf eine Zahl y angewendet gibt dir eine Zahl x für die gilt 10^x = y. Weiterhin entspricht x + 1 immer der Anzahl der Ziffern in deiner Zahl y. Wieso das so ist wird schön auf der Seite verdeutlicht ( https://www.coders-online.net/40 )

weils bei 0 beginnt, logisch.. aber auf int offset = (int) Math.pow(10, length / 2); würde ich nicht kommen ehrlich gesagt. Jz weiß ich aber bescheid, danke dir :)
 

httpdigest

Top Contributor
Noch was rekursives:
Java:
public class MiddleDigit {
  public static int middleDigit(int number) {
    return middleDigit(number, 10);
  }
  private static int middleDigit(int rem, int acc) {
    return rem <= acc ? rem % 10 : middleDigit(rem / 10, acc * 10 + rem % 10);
  }
  public static void main(String[] args) {
    System.out.println(middleDigit(3)); // <- 3
    System.out.println(middleDigit(13)); // <- 1
    System.out.println(middleDigit(123456)); // <- 3
    System.out.println(middleDigit(1234567)); // <- 4
    System.out.println(middleDigit(555596666)); // <- 9
  }
}
 

Px10

Mitglied
Noch was rekursives:
Java:
public class MiddleDigit {
  public static int middleDigit(int number) {
    return middleDigit(number, 10);
  }
  private static int middleDigit(int rem, int acc) {
    return rem <= acc ? rem % 10 : middleDigit(rem / 10, acc * 10 + rem % 10);
  }
  public static void main(String[] args) {
    System.out.println(middleDigit(3)); // <- 3
    System.out.println(middleDigit(13)); // <- 1
    System.out.println(middleDigit(123456)); // <- 3
    System.out.println(middleDigit(1234567)); // <- 4
    System.out.println(middleDigit(555596666)); // <- 9
  }
}
Ich weiß zwar nicht wofür rem und acc stehen aber ich kann es ja bennen wie ich es mag.
Das war auch eher danach was ich gesucht habe :D. So komme ich besser klar als mit den Formeln math.pow usw..
Dennoch danke an alle, es ist interessant die unterschiedlichen Methoden zu sehen.
 

httpdigest

Top Contributor
Ich weiß zwar nicht wofür rem und acc stehen [...]
rem = remainder (also das, was noch übrig bleibt nach der Division durch 10)
acc = accumulator (einfach ein Begriff, der bei Rekursion häufig vorkommt, wenn man einen zusätzlichen Parameter benötigt, der Werte zwischen zwei rekursiven Aufrufen "akkumuliert" (aufsammelt), wie es hier der Fall ist, da es die ursprünglichen Ziffern der Zahl von rechts wieder "aufsammelt")
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
C Erste Ziffer einer Zahl Java Basics - Anfänger-Themen 46
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
R Position einer Ziffer in einer Zahlenkette Java Basics - Anfänger-Themen 5
I kleinste Ziffer einer Zahl ausgeben Java Basics - Anfänger-Themen 3
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
M Ziffer einträge vergrößern Java Basics - Anfänger-Themen 16
Z Methoden Methode, die Ziffer aus Hexadezimal in Zehnerdezimal umrechnet Java Basics - Anfänger-Themen 5
H Anzahl Ziffer in Zahl bestimmen Java Basics - Anfänger-Themen 3
D Ziffer in Zahl Rekursiv Java Basics - Anfänger-Themen 4
B Bestimmte Ziffer Java Basics - Anfänger-Themen 27
T Methoden Maximale Ziffer von int-Wert Java Basics - Anfänger-Themen 8
P Kann Ziffer die am Ende einer Zeile steht (.txt) nicht in int übersetzen Java Basics - Anfänger-Themen 11
J Variablen Ziffer für Ziffer einzeln speichern Java Basics - Anfänger-Themen 5
S Ziffer einer Int größer als x? Java Basics - Anfänger-Themen 7
M ziffer in zahl erkennen mit boolean Java Basics - Anfänger-Themen 12
U Erste Ziffer abspalten Java Basics - Anfänger-Themen 3
M Array, Int-wert Ziffer je Position zuweisen Java Basics - Anfänger-Themen 3
G charAT(i) eine Ziffer ? Java Basics - Anfänger-Themen 2
T Einzelne Ziffer zusammenfügen (ohne Strings oder Arrays) Java Basics - Anfänger-Themen 2
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
B Position einer Ziffer im String bestimmen Java Basics - Anfänger-Themen 4
V Erste Ziffer aus einer dreistelligen "Zahl" heraus Java Basics - Anfänger-Themen 5
E Ziffer in char-Array Java Basics - Anfänger-Themen 2
D Unterschied zwischen Ziffer und Zahl Java Basics - Anfänger-Themen 9
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
D Die Zahl in der Mitte finden Java Basics - Anfänger-Themen 20
C QuickSort - Pivot in der Mitte Java Basics - Anfänger-Themen 5
M Label in die Mitte eines Swing Fensters Java Basics - Anfänger-Themen 2
K Rechteck mit einem Loch in dem Mitte Java Basics - Anfänger-Themen 11
A Mitte des Bildschirms herausfinden Java Basics - Anfänger-Themen 4
B Vertikale Mitte Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
K Geldbetrag in Euro + Cents ausgeben Java Basics - Anfänger-Themen 24
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
berserkerdq2 Methodenaufrufstapel ausgeben, was ist das? Java Basics - Anfänger-Themen 2
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
W Array ausgeben Java Basics - Anfänger-Themen 29
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
S Schachbrettmuster ausgeben Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Array rückwärts ausgeben Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben