Zahlenausgabe Problem

Stangl Puch

Mitglied
Hey Leute, ich bin gerade dabei für die Schule zu lernen und ich soll ein Programm programmieren das alle Zahlen von 1 bis 100 in 10er Reihen ausgibt und jede Zahl bei der, der Einer oder Zehner 7 ist soll als * geschrieben werden. Außerdem soll jede Zahl die durch 7 teilbar ist auch ein * sein.

Bis jetzt habe ich es geschafft alle Zahlen von 1 bis 100 in 10er Reihen auszugeben und die Zahlen die als Einer 7 enthalten werden als Stern geschrieben.

Meine Frage: Wie mache ich es dass auch alle durch-7-teilbaren Zahlen als Stern geschrieben werden und die in denen der Zehner 7 ist auch ein * steht.

Mein Programm sieht bisher so aus:


Java:
public class Zahlenausgabe{

	public static void main(String[]args){

		int i=1;
		int n=100;


		while(i<=n){


			System.out.print(+i+" ");
			i++;
			System.out.print(+i+" " );
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.print("* ");
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.print(+i+" ");
			i++;
			System.out.println(+i+" ");
			i++;

				
			}


		
		}

	}

}


Hoffe um Hilfe, jetzt schon mal Danke ;)


mfg
 

TiZi37

Mitglied
Du kannst einfach prüfen ob i durch 7 glatt teilbar ist mit i % 7 == 0.
Das tust du einfach in eine if-Anweisung und zum zweiten Problem:
zwischen 1 und 100 hat ja nur die 70er Reihe die 7 als zehner :D

und noch ein kleiner Tipp:
ich glaube mit einer for-Schleife wäre es schöner.
 
Zuletzt bearbeitet:

Stangl Puch

Mitglied
Ja das weiß ich auch schon, aber wenn ich das so mache ersetzt es ja nicht die anderen sonder es schreibt einfach nur einen Stern und den Rest trotzdem normal. Theoretisch müsste ich ja vor jedem System.out.print diese If-Anweisung machen oder?
 

vladimir

Aktives Mitglied
Nein du brauchst nur eine if-else Anweisung. Und diese ganzen "Syso" und i++ sind überflüssig! Einmal in dem Schleifendurchlauf i++ machen und zwei unterschiedliche "Syso" in if.
Überlege dir so was =>

schleife(1 bis 100){
if(glatt durch 7) Syso(*);
else Syso(Zahl);
n++;
}

Versuche das ganze geschickt zu lösen, ist eine schöne Übung!
 

Andi_CH

Top Contributor
Versuch einmal diese Struktur zu verstehen - die kann später noch vereinfacht werden, aber im Moment zeigt sie, was du machen solltest

Die drei Prozeduren sind nur als Pseudocode zu verstehen - die ersetzen wir nach und nach durch die richtge Prüfung der Zahl i

Weiss du schon, wie eine davon implementiert werden könnte?

Java:
public class Zahlenausgabe {

	public static void main(String[] args) {
		final int n = 100;
		for(int i=1; i<n; i++) {
			if (zahlDurchSiebenteilbar(i)) {
				System.out.println("*");

			} else if (einerStelleGleichSieben(i)) {
				System.out.println("*");

			} else if (zehnerStellegleichSieben(i)) {
				System.out.println("*");

			} else {
				System.out.println(i);
			}
		}
	}

	private static boolean zehnerStellegleichSieben(int i) {
		// TODO Auto-generated method stub
		return false;
	}

	private static boolean einerStelleGleichSieben(int i) {
		// TODO Auto-generated method stub
		return false;
	}

	private static boolean zahlDurchSiebenteilbar(int i) {
		// TODO Auto-generated method stub
		return false;
	}

}
 

Andi_CH

Top Contributor
Wenn ich bemerke, dass du auf der richtigen Spur bist - sage ich dir wie ich es gelöst habe ;-)

1
2
3
4
5
6
*
8
9
10
11
12
13
*
15
16
*
18
19
*
*
22
23
24
25
26
*
*
29
 

vladimir

Aktives Mitglied
Andi_CH es kann sein das ich mich täusche aber die Lösung sollte so Aussehen,
wenn ich die Aufgabe richtig verstehe:

1 2 3 4 5 6 * 8 9 10
11 12 13 * 15 16 17 18 19 20
* 22 23 24 25 26 27 * 29 30
31 32 33 34 * 36 37 38 39 40
41 * 43 44 45 46 47 48 * 50
51 52 53 54 55 * 57 58 59 60
61 62 * 64 65 66 67 68 69 *
71 72 73 74 75 76 * 78 79 80
81 82 83 * 85 86 87 88 89 90
* 92 93 94 95 96 97 * 99 100

???:L
 

Andi_CH

Top Contributor
Nein deine ist sicher falsch. Da kommt ja noch 17 raus und alle 70iger auch

Das darf nicht sein

und ob die Zahlen untereinander oder nebeneinader stehen, macht ja wohl keinen grossen Unterschied.
Wenn das sein muss, brauche ich etwa 30 Sekunden die println durch print zu ersetzen und immer wenn i modul 10 == 0 ist ein println hinterher zu jagen.

Ach und wenn wir schon bei Kosmetik sind :D
Bitte die Werte schön auf so viele Felder verteilen, wie die längste der Zahlen braucht (aber nicht hard coded bitte :))
 
Zuletzt bearbeitet:

Stangl Puch

Mitglied
Habs schon geschafft ;)

Zwar nicht durch eure Lösungen aber ich habe einfach vor jeder Sys-print Anweisung eine If Anweisung gemacht mit i%10==7||i/10%10==7 und dann einfach System.out.print("*");

Das wars ;)

mich würde interessieren wie vladimir das meint, könntest du mir bitte die Lösung deiner Methode zeigen?
 

vladimir

Aktives Mitglied
Andi Du machst bei 20 auch ein * , ist das richtig? Ich meine "Nicht richtig!"
Ich poste mal meine Lösung:
Java:
//Als 10-ner Reihen mit Sternen
  for(int i=1;i<=100;i++){
    if((i%7)==0 || (i%10)== 7 || i/10%70==7) System.out.print("* ");
    else System.out.print(i+" ");
    if((i%10)==0) System.out.println("");
  }

Bitte um Verbesserungen!
Die Ausgabe noch dazu:

1 2 3 4 5 6 * 8 9 10
11 12 13 * 15 16 * 18 19 20
* 22 23 24 25 26 * * 29 30
31 32 33 34 * 36 * 38 39 40
41 * 43 44 45 46 * 48 * 50
51 52 53 54 55 * * 58 59 60
61 62 * 64 65 66 * 68 69 *
* * * * * * * * * 80
81 82 83 * 85 86 * 88 89 90
* 92 93 94 95 96 * * 99 100
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Ich warne dich vor - die ist überhaupt nicht optimiert

Ich hoffe nur du hast bemerkt dass du nur zwei System.out Zeilen brauchst - als andere ist sehr wartungsunfreundlich!


Die Funktionen sind alles andere als optimiert! (Also: Hinweise wie "einerStelleGleichSieben() kann man kompakter schreiben" sind unnötig :D das weiss ich auch)

Java:
public class Zahlenausgabe {

	public static void main(String[] args) {
		final int n = 100;
		for(int i=1; i<n; i++) {
			if (zahlDurchSiebenTeilbar(i) || 
			   einerStelleGleichSieben(i) || 
			   zehnerStellegleichSieben(i)) 
			{
				System.out.println("*");
			} else {
				System.out.println(i);
			}
		}
	}

	private static boolean zehnerStellegleichSieben(int i) {
		if (i<10) return false;
		return ((i/10)%7) == 0;
	}

	private static boolean einerStelleGleichSieben(int i) {
		int x;
		if (i>10)
			x = i%10;
		else
			x = i;
		boolean retVal = x%7==0;
		return retVal;
	}

	private static boolean zahlDurchSiebenTeilbar(int i) {
		return i%7==0;
	}
}
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
So geht es natürlich auch ;-)
Java:
private static boolean einerStelleGleichSieben(int i) {
	return ((i%10)%7)==0;
}

Selbsverständlich können die Funktionsaufrufe auch durch den boolean Ausdruck ersetzt werden.
die Funktionen sind ja nur drin weil ich dir Pseudocode liefern wollte.

Falls dir die Formatierung der Ausgabe nicht gefällt zeige ich dir auch das noch
 
Zuletzt bearbeitet:

Stangl Puch

Mitglied
Andi, deine Lösung sieht ja schon mal sehr gut aus, jedoch arbeite ich jetzt in der Schule seit 2 Wochen mit Java und habe ehrlich gesagt keine Ahnung was ein private static boolean ist usw. :)

Trotzdem danke ;)
 

Andi_CH

Top Contributor
private niemand ausserhalb der Klasse sieht das. Du kannst das im Moment noch weglassen -> kommt schon noch.

static muss da stehen (wie beim Main auch) schreib es hin. Auch das kommt noch
(Wenn es nicht da steht kann die Funktion nicht ganz so einfach aufgerufen werden)

boolean heisst dass meine Funktion einen boolean Wert (true - false) zurück gibt
(das macht i%10%7 auch, denn sonst könnte if(i%10%7) nichts damit anfangen)

Funktionen schreibt man, wenn man einem Stück Code einen Namen geben will. Der Code wird lesbarer

Java:
if(i%10%7)  //ist nicht so gut lesbar wie 
{
}
if(einerstelleDurchSeibenTeilbar(i))
{
}

oder wenn man denselben Code an mehr als einer Stelle braucht.


Mein Algorithmus hat noch einen unschönen Nebeneffekt:
Alle mehrfachen von 10 werden etwas seltsam behandelt

die Einerstelle ist 0
0%7 ist 0 -> Das heisst 0 ist durch 7 ohne Rest teilbar, was mathematisch ja auch stimmt.

Das ist jetzt eine Definitionsfrage ob 10, 20 etc ausgegeben werden muss oder nicht.
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Andi Du machst bei 20 auch ein * , ist das richtig? Ich meine "Nicht richtig!"
Ich poste mal meine Lösung:
Java:
//Als 10-ner Reihen mit Sternen
  for(int i=1;i<=100;i++){
    if((i%7)==0 || (i%10)== 7 || i/10%70==7) System.out.print("* ");
    else System.out.print(i+" ");
    if((i%10)==0) System.out.println("");
  }


(i%10)== 7 -- ist ok ich habe (i%10)%7==0 deines ist besser, denn meines befindet dass 0 auf durch 7 teilbar ist. i%10 Kennst du modulo? % ist der modulo Operator. Der bringt im Fall von 10 die Einerstelle.

i/10%70==7 -- was soll %70? Das ist absolut unnötig. Du teilst die int-Zahl / 10 (dazu musst du wissen dass 79/10 = 7 gibt. (Java macht das bei int Zahlen so) dann dann prüfst du ob es 7 ist -> ok
i/10 == 7 reicht

Wenn du immer noch 10 Zeilen mit System.out drin hast, machst du einen Fehler - ich hoffe du hast das korrigert

Hier mein Code bei dem 20 auch raus kommt
Java:
public class Zahlenausgabe {

	public static void main(String[] args) {
		final int n = 100;
		for(int i=1; i<n; i++) {
			if (((i/10) == 7) || (i%10 == 7) || (i%7==0))
			{
				System.out.print("* ");
			} else {
				System.out.print(i+ " ");
			}
			if ((i%10==0)&&(i>0)) System.out.println("");
		}
	}
}


Allerdings finde ich diese Variante besser lesbar
Java:
package com.javaforum;

public class Zahlenausgabe {

	public static void main(String[] args) {
		final int n = 100;
		for(int i=1; i<n; i++) {
			if (zahlDurchSiebenTeilbar(i) ||
				einerStelleGleichSieben(i) ||
				zehnerStelleGleichSieben(i)) 
			{
				System.out.print("* ");
			} else {
				System.out.print(i+ " ");
			}
			if ((i%10==0)&&(i>0)) System.out.println("");
		}
	}

	private static boolean zehnerStelleGleichSieben(int i) {
		return (i/10) == 7;
	}

	private static boolean einerStelleGleichSieben(int i) {
		return i%10 == 7;
	}

	private static boolean zahlDurchSiebenTeilbar(int i) {
		return i%7==0;
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
maddin86 Zahlenausgabe- bräuchte einen Tipp Java Basics - Anfänger-Themen 11
I Zahlenausgabe Java Basics - Anfänger-Themen 2
T 5-stellige Zahlenausgabe Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben