# Größte Ziffer einer Zahl



## java26 (13. Nov 2011)

Hallo,

die Aufgabe ist...

In dieser Aufgabe soll die größte Ziffer einer übergebenen ganzen Zahl ermittelt werden, wenn diese in der Zehnerbasis dargestellt wird.Beispiel: Die größte auftretende Ziffer in -254123 ist 5.


```
int a = 0;
int b = 0;
int c = 0;

if (n<0){
n=n*(-1);
}

String x = ""+n;
a=x.length();

for (int i = 1; i <= a; i++) {
	b = charAt(i);
	
	if (b>c){
		c=b;
	}
}
return c;
```


Es kommt folgender Fehler raus.

Wrapper.java:25: cannot find symbol
symbol  : method charAt(int)
location: class Wrapper
	b = charAt(i);
	    ^
1 error


Könnt ihr mir da mal hefen?


----------



## Gast2 (13. Nov 2011)

Du willst vermutlich x.charAt(i) aufrufen.


----------



## lipox (13. Nov 2011)

```
b = x.charAt(i)
```

oder so ähnlich.


----------



## XHelp (13. Nov 2011)

du willst höhstwahrscheinlich 
	
	
	
	





```
x.charAt
```
 aufrufen.
P.S. in b steht nicht die Ziffer drin, sondern der ASCII-Code der Ziffer.


----------



## njans (13. Nov 2011)

Das Beispiel kommt mir bekannt vor, hatten wir da nicht exakt das Beispiel erst vor ein paar Tagen hier?


----------



## XHelp (13. Nov 2011)

http://www.java-forum.org/java-basics-anfaenger-themen/126996-maximale-ziffer-int-wert.html
ne, da sah nur ähnlich aus


----------



## xehpuk (13. Nov 2011)

Bitte nicht über String gehen! Probier es mal rekursiv oder iterativ mit modulo 10 und dividieren durch 10.


----------



## java26 (13. Nov 2011)

XHelp hat gesagt.:


> du willst höhstwahrscheinlich
> 
> 
> 
> ...




Und wie kann ich diese ASCII-Code umwandeln in die Ziffer?


----------



## Xeonkryptos (13. Nov 2011)

java26 hat gesagt.:


> Und wie kann ich diese ASCII-Code umwandeln in die Ziffer?



Indem du es zu einem String wieder zusammenfügst.


----------



## java26 (13. Nov 2011)

Xeonkryptos hat gesagt.:


> Indem du es zu einem String wieder zusammenfügst.




hmm... das wäre mein erste Weg.
Aber wie soll ich es im Code machen?? Mit was für ein Befehl?


----------



## Xeonkryptos (13. Nov 2011)

zum Beispiel über den Konstruktor: String-Konstruktor

Edit: Oder du packst es in ein Array vom Typ [JAPI]CharSequence[/JAPI] und wendest dann die Methode toString() an, sofern du mehrere Chars hast. Wenn du nur einen hast, musst du dem String den Char einfach nur zuweisen.


----------



## java26 (13. Nov 2011)

Xeonkryptos hat gesagt.:


> zum Beispiel über den Konstruktor: String-Konstruktor
> 
> Edit: Oder du packst es in ein Array vom Typ [JAPI]CharSequence[/JAPI] und wendest dann die Methode toString() an, sofern du mehrere Chars hast. Wenn du nur einen hast, musst du dem String den Char einfach nur zuweisen.




also nur 

b = toString();

reinschreiben?


----------



## L-ectron-X (13. Nov 2011)

```
import java.util.*;

public class GroessteZiffer {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Gib die zu bearbeitende Zahl ein: ");
        char[] input = sc.nextLine().toCharArray(); //Eingabe aus der Kommandozeile lesen
        
        char c = '0';
        for(int i = 0; i < input.length; i++) {
            if(Character.isDigit(input[i])) { //Zeichen auf numerischen Wert prüfen
                if(input[i] > c) { //ist das Zeichen größer als c?
                    c = input[i]; //Zeichen merken
                }
            }
            else {
                System.out.println("Die Eingabe besteht zum Teil aus Buchstaben!");
                return;
            }
        }
        System.out.println("Die groesste Ziffer in der eingegebenen Zahl lautet "+c);
    }
}
```


----------



## xehpuk (13. Nov 2011)

So hätte es dann mit meinem Vorschlag ausgesehen:

```
public final static int BASE = 10;

public static int maxDigit(int n) {
	if (n < 0)
		n = -n;
	int max = 0;
	while (n > 0) {
		final int i = n % BASE;
		if (i > max)
			max = i;
		n /= BASE;
	}
	return max;
}
```


----------



## java26 (13. Nov 2011)

Kann man meinen Code ( ganz OBEN ) auch nehmen und darin verbessern damit es läuft?

Oder ist er komplett falsch?


----------



## XHelp (13. Nov 2011)

kannst du auch machen.


----------



## Xeonkryptos (14. Nov 2011)

java26 hat gesagt.:


> also nur
> 
> b = toString();
> 
> reinschreiben?



Das würde keinen Sinn machen! toString() ist eine Methode, die an ein Objekt gebunden ist, dass heißt, du musst diese Methode an den Character, den du raus hast aufrufen.

In deinem Fall wäre es "max", aber NUR, wenn du es so deklarierst: 
	
	
	
	





```
char max;
```
!


----------



## Landei (14. Nov 2011)

```
public static int biggest(int n) {
   int big = 0;
   for(int x = Math.abs(n); x > 0; x /= 10) {
       big = Math.max(x % 10, big);
   }
   return big;
}
```


----------



## Peter W. Marth (14. Nov 2011)

```
private static int biggest(int n){
		return n>0 ? Math.max( n%10, biggest(n/10) ) : 0;
	}
```

für nicht negative n.


----------

