Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Nö, ein Try-Catch-Block passt da eher weniger. Das nimmste, wenn eine Methode eine Exception werfen könnte.

Es handelt sich bei deinem Vorhaben um eine simple Validierung. Du könntest dir eine Funktion bauen, die die Eingabe auf Gültigkeit prüft und dann true oder false ausgibt. Entsprechend müsstest du reagieren, z.B. eine Fehlermeldung ausgeben und den Nutzer zur erneuten Eingabe auffordern.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

@gumpi: try/catch ist imo gar nicht so verkehrt um zumindest auf ne ganze Zahl zu prüfen...

Schau dir mal die Methode Integer.parseInt(String s) an.

Falls das gut geht, kannst du danach ja noch weitere Prüfungen durchführen (z.B. >=0 oder so).

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
try/catch ist imo gar nicht so verkehrt um zumindest auf ne ganze Zahl zu prüfen...

Schau dir mal die Methode Integer.parseInt(String s) an.

*zustimm*

Daran hatte ich gar nicht gedacht. Wenn das als Validierung reicht, bietet es sich natürlich an :)

greez 8)
JoSsiF

Hi, habs mir grad durchgelesen.
Also meiner Meinung nach müsste das mit folgendem Code perfekt gehen:

try {
int src = new Scanner(System.in).nextInt();
}catch(NumberFormatException e) {
System.out.printl("DU TROTTEL, QUERSUMME EINER ZAHL!!");
return;
}
String s = "" + src;
int[] numbers = new int[s.length()];
for(int i = 0; i < s.length(); i++) {
numbers = Integer.parseInt(s.charAt(i));
}
int erg = 0;
for(int i : numbers) {
erg+=i;
}
System.out.println("Die Quersumme ist: " + erg);


mfg.

P.S. der Code ist NICHT getestet, bin bei meiner Oma, und hab kein Java installiert, der is so aus m Kopf rausgeschrieben. Also bei Groß/Klein schreibung werden sicher Fehler sein, ausserdem bin ich nicht ganz sicher ob man Primitive Datentypen in einer For-Each schleife verwenden darf (glaub schon, wenn net schreibt halt "Integer" hin).

Also ich bin wieder zhaus, und hab den Code nochmal überdacht und in Eclipse ausprogrammiert, im Endeffekt bin ich zu 2 Lösungen gekommen:
1. Die Ausfuehrliche Variante:
      System.out.print("Bitte gib eine Integer Zahl ein, von der du die Quersumme moechtest: ");
      int zahl = 0;
      try {// falls ein Text eingegeben wird oder eine zu grosze/kleine Zahl
         zahl = new Scanner(System.in).nextInt();
      } catch(NumberFormatException e) {
         System.out.println("Bitte gib eine Integer-Zahl ein (" + Integer.MIN_VALUE + " - " + Integer.MAX_VALUE + ")");
         return;
      }
      String nums = "" + zahl; //die Zahl als Text um jedes Zeichen heraus zu loesen
      int erg = Integer.parseInt("" + nums.charAt(0)); // ergebniss
      
      System.out.println(); //neue zeile
      System.out.print(erg);
      for (int i = 1; i < nums.length(); i++) {
         System.out.print(" + " + nums.charAt(i));
         erg+= Integer.parseInt("" + nums.charAt(i));
      }
      System.out.print(" = " + erg);

und 2. die Leichterere Variande die etwas besser verstanden werden kann:

      System.out.println("Bitte eine Zahl eingeben: ");
      int zahl = 0; //die Zahl um die es sich dreht
      try {// falls ein Text eingegeben wird oder eine zu grosze/kleine Zahl
         zahl = new Scanner(System.in).nextInt();
      } catch(NumberFormatException e) {
         System.out.println("Bitte eine Integer-Zahle eingeben, sonst nichts");
         return;
      }
      String ziffern = "" + zahl; //Die selbe Zahl als String, um jedes Zeichen heraus zu loesen.
      int zif[] = new int[ziffern.length()]; //array, um jede Ziffer einzeln zu speichern
      for (int i = 0; i < zif.length; i++) //for-schleife die ueber die Ziffern drueber geht
         zif = Integer.parseInt("" + ziffern.charAt(i));//Integer.parseInt, wandelt einen String in eine Zahl um
      int sum = 0; //das End ergebniss
      for (int i = 0; i < zif.length; i++)
         sum += zif; //die Ziffern zusammenzaehlen, selbes wie "sum = sum + zif";
      System.out.println("Quersumme = " + sum);   

Also der Code ist getestet. Wobei ich irgendwie glaube, des braucht sowieso jetzt keiner mehr^^.

mfg.
 

hey was hälst du davon??  ;)

public class Quersumme
{
        int PositionH;
        int zahl;
        int Quersumme;
       
        public Quersumme (int Zahl) {
            zahl = Zahl; }
       
        int berechneQuersumme() {
            while (zahl>0) {

            Quersumme = Quersumme + zahl % 10;
            zahl = zahl / 10;
        }
                return Quersumme;
            }
                   

}
 

Also ich hab das ganze so gelöst ;)
Allerdings endet mein Programm erst bei 0.

import java.util.*;

public class Quersummen {
   public static void main(String[]args){
      Scanner eingabe= new Scanner (System.in);
      long qs; //Quersumme
      long r;
      long zahl2; //neue Zahl nach teilen durch 10
      long zahl;
      do{
         do{
               System.out.println("Bitte geben sie eine positive Zahl ein, 0 beendet das Prgramm:");
            zahl= eingabe.nextLong();
         }while (zahl<0);
         do{
            r=zahl%10;
            zahl2=zahl/10;
            qs= r+zahl2;
            zahl=qs;
               //System.out.println("Bisherige Schritte: " +zahl);
         }while(qs>=10);
         System.out.println("Die einstellige Quersumme der eingegebenen Zahl ist: "+qs);
      }while (zahl!=0);
      System.out.println("Das Programm wurde beendet!");
   }
}

Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue

Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben:

- die Quersumme einer natürlichen Zahl soll berechnet werden
- wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert
- für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/)
- die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben

soviel dazu. so sieht im Moment mein Programm aus:

class A1B3
{public static void main(String args[])
{int q=1543;
int su=1;
int m=10;
System.out.println("Quersumme");
while (q>=1)
{ su=q%m;
{ System.out.println(q+"%"+m+"="+su);
q=q/m;
}
System.out.println("Ende der Berechnung");
}
}
}

ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen. 

Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue

Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben:

- die Quersumme einer natürlichen Zahl soll berechnet werden
- wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert
if(zahl < 0) zahl * -1;
- für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/)
- die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben

soviel dazu. so sieht im Moment mein Programm aus:

class A1B3
{public static void main(String args[])
{int q=1543;
int su=1;
int m=10;
System.out.println("Quersumme");
while (q>=1)
{ su=q%m;
{ System.out.println(q+"%"+m+"="+su);
q=q/m;
}
System.out.println("Ende der Berechnung");
}
}
}

ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen. 
Und jetzt zum Rest:
Wenn du einen Summand ausgeben kannst, kannst du ihn auch Speichern, bzw. ihn gleich auf die Quersumme addieren, das gibt die aufgabenstellung her:
int quersumme = 0;

innerhalb der schleife:
quersumme += summand;
Am ende:
System.Out.Println("Quersumme: " + quersumme);

Rest der Source passt, nur das beschriebene noch an den richtigen stellen einfügen ;) 

Ahja: *-1 tut nichts anderes als deine Negative in eine Positive Zahl zu verwandeln (ich denk das ist dir klar?), d.h. du gehst davon aus, dass du die Quersumme des Betrags bildest. 

danke das hat mir geholfen  ;)

ach ja mir ist aufgefallen dass ich vergessen hab mit (-1) zu multiplizieren. Wo muss die Anweisung

 if(zahl < 0) zahl * -1;

denn hin? blicke da irgendwie nicht durch.

Wo willst du's denn prüfen?
Die Prüfung macht nur Sinn _vor_ der Schleife (danach ist's müllig, währenddessen kriegst du abwechselnd einen Positiven und einen negativen Wert den du addierst oder so - je nach Position), Im Prinzip gehört die prüfung hinter die Eingabe, aber in deinem Fall ist die Eingabe die deklaration von q, also wäre vor beginn der schleife und nach der deklaration von q zu prüfen wie q aussieht und ggf. der Betrag zu bilden.   

ok hat sich geklärt


« Zahl1 größer kleiner als Zahl2, oder gleich groß?VB 2008 express: größer kleiner gleich null ?? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Eingabefelder
Als Eingabefelder werden in einem Programm oder in Online-Formularen die Stellen bezeichnet, an denen Informationen eingetippt werden können. Die Beschriftung neben ...

Eingabeaufforderung
Die Eingabeaufforderung ist ein Begriff aus dem IT-Bereich und bezeichnet eine Markierung auf der Kommandozeile, welche auf die Stelle verweist, an der man Kommandozeilen...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...