Kommandozeilenargumente einlesen

Status
Nicht offen für weitere Antworten.

SaltonSea

Mitglied
Hallo, ich suche ein kleines Programm, was eine beliebig lange Folge von ganzen Zahlen als Kommandozeilenargumente einliest. Das Programm soll in der Eingabe die zusammenhängende Folge von Zahlen finden, die addiert die größte Summe bildet.

Also z.B.:

> 1 2 -4 3 5 6 -2 3 -15 9

3 5 6 -2 3


Wäre nett, wenn mir jemand bei diesem Problem helfen könnte.



Gruß, SaltonSea
 

Murray

Top Contributor
Das sieht doch sehr nach Hausaufgabe aus. Hast Du Dir schon selbst Gedanken gemacht? Was genau ist das Problem?
 

SaltonSea

Mitglied
Ja natürlich hab ich mir Gedanken gemacht.

So siehts bisher aus:

Code:
import java.io.*;
import java.util.*;

  public class Zahlenfolge {
	
		public static void main(String[] args) throws Exception {
			
		String Eingabe= "1";	
			
		BufferedReader Tastatur;
		
		Tastatur = new BufferedReader(new InputStreamReader(System.in));
		
			Eingabe = Tastatur.readLine();
		 //	System.out.println(Eingabe);
					
			
		}// Ende main	


	
  } //Ende class

Also Zahlen kann ich jetzt beliebig viele eingeben, aber wie findet man die zusammenhängende Folge von Zahlen, die addiert die größte Summe ergeben?
 

messi

Bekanntes Mitglied
Du könntest z. B. mit zwei Schleifen alle möglichen Folgen bilden und deren Summen errechnen. Beim Durchlauf merkst du dir dann nur die Folge mit der bisher größten Summe.
 

Murray

Top Contributor
Wenn in der Aufgabe "Kommandozeilenparameter" gefragt sind, dann machst Du Dir mit dem Einlesen schon zuviel Arbeit: normalerweise würde man darunter die Parameter verstehen, die der main-Methode übergeben werden. Daraus kannst Du dann ein int-Array machen:
Code:
public class Zahlenfolge {
   
      public static void main(String[] args)  {
   
        try {
           int[] nums = new int[ args.length];
           for ( int i=0; i<nums.length; i++) nums[i] = Integer.parseInt( args[i]);

           //--- Und jetzt zwei verschachtelte for-Schleifen: eine variiert den Start-Index der 
           //--- betrachteten Folge (von 0 bis (nums.length-2), die andere den End-Index (von 1
           //--- bis (nums.length-1)). Mit diesen Indices wieder eine for-Schleife laufen lassen und
           //--- alles aufsummieren. Wenn die Summe grösser ist als das bisherige Maximum: Folge
           //--- merken

        } catch ( Exception e) {
            e.printStackTrace();
        }
      }


   
 }
 

messi

Bekanntes Mitglied
Murray hat gesagt.:
Code:
           //--- Und jetzt zwei verschachtelte for-Schleifen: eine variiert den Start-Index der 
           //--- betrachteten Folge (von 0 bis (nums.length-2), die andere den End-Index (von 1
           //--- bis (nums.length-1)). Mit diesen Indices wieder eine for-Schleife laufen lassen und
           //--- alles aufsummieren. Wenn die Summe grösser ist als das bisherige Maximum: Folge
           //--- merken
Auch die erste Schleife muss bis n.l-1 laufen, weil ggf. das letzte Element alleine die größte "Folge" sein kann. Die zweite Schleife startet nicht bei 1 und außerdem kann diese Schleife schon zum Aufsummieren verwendet werden.
 
S

SlaterB

Gast
Ja natürlich hab ich mir Gedanken gemacht.
guter Scherz, zum eigentlichen Problem schreibt du doch gar nix ;)
wäre evtl. auch in einen Mathematik-Forum besser aufgehoben,

auf doppelte Schleifen kann man übrigens verzichten, du musst nur einmal alle Zahlen durchlaufen, etwa so:

Zahlen 1 2 -4 3 5 6 -2 3 -15 9

maximale Summe bisher: 0;
ArrayList der maximalen Summe bisher = null;
zwischensumme = 0;
zwischensummen-ArrayList = null


untersuche Zahl 1, starte neue Zwischensumme, nehme 1 auf
(in die Summe und in die Liste zum Merken aller Werte der Zwischensumme),
merke Liste mit 1 als maximale Summe bisher

untersuche Zahl 2, nehme 2 auf in aktuelle Zwischensumme auf,
merke Liste mit 1, 2 als maximale Summe bisher

untersuche Zahl -4, nehme -4 auf in aktuelle Zwischensumme auf,
aktuelle Zwischensumme damit kleiner 0,
löse aktuelle Zwischensumme auf, fahre fort

untersuche Zahl 3, starte neue Zwischensumme, nehme 3 auf,
Liste mit 3 ist eine genausogroße Liste wie bisher maximale Liste 1 und 2, was tun? muss Anwender entscheiden

untersuche Zahl 5, nehme 5 auf in aktuelle Zwischensumme auf
merke Liste mit 3, 5 als maximale Summe bisher

untersuche Zahl 6, nehme 6 auf in aktuelle Zwischensumme auf
merke Liste mit 3, 5, 6 als maximale Summe bisher

untersuche Zahl -2, nehme -2 auf in aktuelle Zwischensumme auf
Zwischensumme von 3, 5, 6, -2 noch größer als 0, ok

untersuche Zahl 3, nehme 3 auf in aktuelle Zwischensumme auf
merke Liste mit 3, 5, 6, -2, 3 als maximale Summe bisher

untersuche Zahl -15, nehme -15 auf in aktuelle Zwischensumme auf,
aktuelle Zwischensumme damit kleiner 0,
löse aktuelle Zwischensumme auf, fahre fort

untersuche Zahl 3, starte neue Zwischensumme, nehme 9 auf,


Ende, wandle ArrrayList der maximalen Summe bisher in ein int-Array oder was auch immer




ich hab jetzt mal auf konkrete Programmierung verzichtet, dann kannst du vielleicht doch noch ein wenig dabei lernen,
mit int-Werten alleine oder int-Arrays kann man nur schlecht dynamisch Listen aufbauen die immer länger werden,
deshalb schlage ich da ArrayLists vor, da man keine ints in ArrayListen reintun darf dann ersatzweise Integer-Objekte,

ansonsten ist das eigentlich nur eine Verwaltung von einigen Variablen, manche wachsen bei jedem Schleifendurchlauf oder werden wieder auf null/ 0 gesetzt, andere geben den Maximalstand wieder,
da ist dann eben ein bisschen zu basteln wie die Schleife eigentlich aussehen sollte,
viele Abfragen if (x == null), if (y < z) usw.

ist sicherlich schwieriger als der doppelte Schleifen-Ansatz, aber bei 1000 Zahlen geht das 500x schneller ;)

----------

überlege ob die Aufgabe auch nur negative Zahlen als mögliche Eingabe vorsieht,
dann sollte das Programm später auch mit einer Liste wie "-3 -5 -17 -4" korrekt arbeiten
-> testen!

------------

Tipp: falls du ArrayLists verwendest und die maximale List durch die aktuelle ZwischenList ersetzen möchtest:
kopiere die ArrayList, nicht einfach das Objekt übernehmen, ansonsten wirken sich spätere Änderungen an der ZwischenList (als Einfügen weitere Zahlen) auch auf die MaximumList aus,


Tipp: schreib sehr viele Log-Ausgaben, etwa zu Beginn jeder Schleife,
und auch wenn du in der Schleife irgendwas tust, einfach immer ein Log dazu,
dann kannst du später einfacher überblicken was passiert ist

Code:
System.out.println("untersuche nun Zahl "+zahl);
System.out.println("maximale Summe bisher: "+..);
System.out.println("ArrayList der maximalen Summe bisher: "+..);

if (zwischenList == null) {
   System.out.println("erstelle neue ZwischenList");
   ...
} else {
   System.out.println("benutze vorhandene ZwischenList");
   ...
}
 
B

bygones

Gast
der effiziente Algorithmus ist wie oben beschrieben ein einfacher scan, der einmal über die Daten geht.

du kannst dir das ganze mal als diagramm aufzeichnen und den summenverlauf eintragen, dann erkennt man schön, wie der Algorithmus läuft
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kommandozeilenargumente in aufgerufenden Batchjobs verarbeiten Allgemeine Java-Themen 6
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
K RTF-Dokumente einlesen Allgemeine Java-Themen 1
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
J Java 8 Datei einlesen Allgemeine Java-Themen 1
S Handschrift einlesen & darauf reagieren OCR Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
E Best Practice LaTeX aus Textdateien einlesen und bearbeiten Allgemeine Java-Themen 4
KaffeeFan Bilddatei einlesen und bearbeiten? Allgemeine Java-Themen 5
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
L Level einlesen Allgemeine Java-Themen 9
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
N Einlesen einer Kostenmatrix, Verarbeitung mit Nearest Neighbor Allgemeine Java-Themen 1
OnDemand String aus html einlesen Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Verzeichnis ins JMenu einlesen Allgemeine Java-Themen 2
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
J TextArea einlesen, mit string Allgemeine Java-Themen 2
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
Kenan89 Schnelleres Einlesen von Images Allgemeine Java-Themen 6
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
R String einlesen Allgemeine Java-Themen 8
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
S Spaltenweise einlesen Allgemeine Java-Themen 9
K JAVA Datei einlesen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
T XML einlesen Allgemeine Java-Themen 14
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
C Strings in Excel einlesen! Allgemeine Java-Themen 2
K htmlCode einlesen, Speicherüberlauf? zu viel code? Allgemeine Java-Themen 21
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K CSV einlesen und speichern Allgemeine Java-Themen 7
Q Text Datei einlesen Allgemeine Java-Themen 27
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M PDF einlesen mit PDFBox Allgemeine Java-Themen 3
L Benutzereingabe einlesen Allgemeine Java-Themen 5
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
B StringBuilder von File einlesen Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
E Leerzeichen verschwinden beim Einlesen von .txt-Dateien Allgemeine Java-Themen 5
A JExcel Formel einlesen Allgemeine Java-Themen 2
G Java PDF-Einlesen Allgemeine Java-Themen 9
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
M UTF-8 Datein einlesen, Zeichenproblem Allgemeine Java-Themen 9
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
J Konfigurationsdatei einlesen Allgemeine Java-Themen 21
G BigInteger aus DB nach einlesen in JAVA eingeklammert Allgemeine Java-Themen 3
trash mehrzeilige .txt einlesen/formatieren Allgemeine Java-Themen 8
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Textzeile einlesen Allgemeine Java-Themen 4
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben