|
|
|
|
Oder besser:
|
Code: |
import java.util.Scanner;
public class EchoName
{
public static void main(final String[] args)
{
final Scanner scan = new Scanner(System.in);
System.out.println("Geben sie ihren Namen ein: ");
final String[] name = scan.nextLine().split(" ");
name[name.length - 1] = name[name.length - 1].toUpperCase();
for (int i = 0; i < name.length; i++)
{
System.out.print(name[i]);
if (i < (name.length - 1))
{
System.out.print(" ");
}
}
// Damit am Ende der Ausgabe ein Zeilenumbruch erzeugt wird
// Nur interessant falls noch weiterer Text ausgegeben wird
System.out.println();
}
} |
|
|
|
|
|
|
|
|
Oder man benutzt eine der zahllosen StringHelper Bibliotheken und spart sich das unschöne Geraffel.
|
|
|
|
|
|
|
Wenn man generell mit Flaks auf Spatzen schießt, dann kann man das tun.
|
|
|
|
|
|
nubs, so macht man das in der Businesswelt!
|
|
Code: |
import java.util.Scanner;
public class Main
{
protected static enum NameStates {
FIRST_NAME, LAST_NAME
}
public static void main(final String[] args)
{
final Scanner scan = new Scanner(System.in);
System.out.println("Geben sie ihren Namen ein: ");
String name = scan.nextLine();
int nameLength = name.length();
String output = "";
String name2 = name.substring(0, name.length());
int lastNameFrom = 0;
//do not capitalize middle names
int i = 0;
while (true) {
try {
char currentLetter = name2.charAt(0);
if (currentLetter == ' ') {
lastNameFrom = i;
}
name2 = name2.split("^.")[1];
} catch (IndexOutOfBoundsException e) {
break;
}
i++;
}
NameStates currentState = NameStates.FIRST_NAME;
while (true) {
char currentLetter = name.charAt(0);
if (name.length() < nameLength - lastNameFrom) {
currentState = NameStates.LAST_NAME;
}
//TODO add support for non-ascii characters
if (currentState == NameStates.LAST_NAME && currentLetter > 0x60 && currentLetter < 0x7b) {
currentLetter -= ' ';
}
output = output.concat(String.valueOf(currentLetter));
if (name.hashCode() > 0 && name.hashCode() < 0xff) {
break;
}
String[] cutFirstCharacter =name.split(".", 2);
name = cutFirstCharacter[cutFirstCharacter.length - 1];
}
System.out.println(output);
scan.close();
}
} |
|
|
|
|
|
|
|
|
Abgesehen davon, dass das nicht der Business-Welt entspringen kann (man kann noch nachvollziehen, was das Programm macht), bin ich dafür, dass jemand™ eine Version mit Brainfuck2D erstellt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von cms am 29.03.2013 22:00]
|
|
|
|
|
|
In meinem nächsten Versuch verwende ich mehr XML, versprochen!
|
|
|
|
|
|
|
Wäre ich ein Business-Kasper, würde ich dir jetzt einen schlecht bezahlten Job anbieten.
|
|
|
|
|
|
|
|
|
|
|
| Zitat von cms
Wenn man generell mit Flaks auf Spatzen schießt, dann kann man das tun.
| |
Das ist eine Interpretation.
Eine andere ist, dass man nicht der erste Mensch mit diesem Problem ist und es vermutlich jemand klüger und besser gelöst hat. Solange es dann nicht um den Lerneffekt geht, sondern es einfach nur funktionieren soll, braucht man sich das Leben nicht unnötig schwer machen.
|
|
|
|
|
|
|
Oder, dass die Java VM eh schon ne V2 Rakete ist, und die kleine zusätzliche Flak machts dann auch nicht mehr aus.
|
|
|
|
|
|
|
| Zitat von [smith]
| Zitat von cms
Wenn man generell mit Flaks auf Spatzen schießt, dann kann man das tun.
| | Das ist eine Interpretation.
Eine andere ist, dass man nicht der erste Mensch mit diesem Problem ist und es vermutlich jemand klüger und besser gelöst hat. Solange es dann nicht um den Lerneffekt geht, sondern es einfach nur funktionieren soll, braucht man sich das Leben nicht unnötig schwer machen.
| | Meine Interpretation ist, dass eine Bibliothek auch immer wie eine FlaK - oder gleich FlaK-Batterie - ist. Und wenn man ein Problem wie 5 Spatzen hat, dann ist das vollkommen übertrieben. Eine Zwille tut es da auch. Deswegen wollte ich zuerst eine join-Funktion nehmen und habe deswegen gegooglet, ob sowas in Java integriert ist. Ist es nicht. Allerdings gab es (z.B. auf stackoverflow) ein paar Leute, die ein solche Funktion gepostet haben. Allerdings war ich der Ansicht, dass diese etwas übertrieben wären, zumal es so aussieht, als ginge es bei G-Shocker um den Lerneffekt. Deswegen habe ich eine kleine, in meinen Augen ziemlich unkomplizierte Lösung erstellt, die gleichzeitig failsafe ist.
Wäre das Problem oder die Aufgabe größer und benötigte ich mehr als eine Funktion aus der Bibliothek, dann nähme ich die, weil, wie du schon sagtest, jemand das Problem/die Aufgabe bestimmt schon besser gelöst hat.
/: Gerade bei Open-Source-Bibliotheken kann man auch einfach den Code von einer Funktion nehmen und einbinden, sofern das mit der Lizenz vereinbar ist.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von cms am 29.03.2013 23:31]
|
|
|
|
|
|
Solange es nicht zeitkritisch ist, sollte man eher darauf achten das man ähnliche Probleme auf gleiche Weisen erledigt. Egal ob man eine Flak nutzt oder eine Atombombe drauf wirft.
|
|
|
|
|
|
|
Bin ich eigentlich der einzige, der merkt, dass es augenscheinlich um eine Übungsaufgabe geht?
Ja, es gibt nur einen Grund, das Rad neu zu erfinden: Man will etwas über Räder lernen. Und G-Shocker will, so wie es aussieht*, etwas über Räder lernen. Also ist natürlich die beste Idee, dass er zum Reifen-Händler fährt, sich dort eine Felge und einen Reifen kauft und sich das anschließend in einer Werkstatt den Reifen auf die Felge ziehen lässt. Nicht.
* Denn mal ganz im Ernst: Welcher Kunde/Chef will, dass man ein Konsolenprogramm schreibt, das eine Zeile einliest und dann das letzte Wort der Eingabe in Großbuchstaben ausgibt.
|
|
|
|
|
|
|
Das war nur eine Übungsaufgabe um die Substring Methode, und allgemeines über String-Objekte zu lernen.
|
|
|
|
|
|
|
Den Verdacht hatte ich auch, deshalb habe ich Substring mit allen Mitteln vermieden
|
|
|
|
|
|
|
Ich hab da mal...
|
Code: |
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class parser {
public abstract static class p {
public abstract result parse(String s);
}
public static class result {
public boolean success;
public String left, right;
public result(boolean success) {
this.success = success;
left = null;
right = null;
}
public result(boolean success, String left, String right) {
this.success = success;
this.left = left;
this.right = right;
}
}
public static class single extends p {
private char c;
public single(char c) {
this.c = c;
}
public result parse(String s) {
if (s.length() > 0 && s.charAt(0) == c) {
return new result(true, Character.toString(c), s.substring(1));
} else {
return new result(false);
}
}
}
public static class any extends p {
private List<Character> c;
public any(Character[] c) {
this.c = Arrays.asList(c);
}
public result parse(String s) {
if (s.length() > 0 && c.contains(s.charAt(0))) {
return new result(true, Character.toString(s.charAt(0)), s.substring(1));
} else {
return new result(false);
}
}
}
public static class combine extends p {
private p left, right;
public combine(p left, p right) {
this.left = left;
this.right = right;
}
public result parse(String s) {
result r = left.parse(s);
if (r.success) {
result r2 = right.parse(r.right);
if (r2.success) {
return new result(true, r.left + r2.left, r2.right);
}
}
return new result(false);
}
}
public static class repeat extends p {
private p inner;
public repeat(p inner) {
this.inner = inner;
}
public result parse(String s) {
result r = inner.parse(s);
if (r.success) {
result r2 = this.parse(r.right);
if (r2.success) {
return new result(true, r.left + r2.left, r2.right);
} else {
return new result(true, r.left, r.right);
}
}
return new result(false);
}
}
public static void main(String[] args) {
Character[] alphas = new Character[] {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
};
String s = new Scanner(System.in).nextLine();
p alpha = new repeat(new any(alphas));
p space = new single(' ');
p name = new combine(alpha, new combine(space, alpha));
if (name.parse(s).success) {
String first = alpha.parse(s).left;
String last = alpha.parse(space.parse(alpha.parse(s).right).right).left;
System.out.printf("%s %s", first.toLowerCase(), last.toUpperCase());
}
}
}
|
|
e/ Tihi, name2 = name2.split("^.")[1]; ist großartig
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von B0rG* am 30.03.2013 2:31]
|
|
|
|
|
|
Man kann in praktisch jeder Sprache beschissen programmieren, aber nur in Java wirkt es authentisch.
|
|
|
|
|
|
|
Da fehlt definitiv noch XML, aber ansonsten ist das ganz großes Kino!
@Virtus: Das ist übrigens ein ganz "normaler" Parser. Der sieht auch in anderen Sprachen nicht sonderlich anders aus.
/: G-Shocker, poste bitte alle Aufgaben hier!
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von cms am 30.03.2013 3:56]
|
|
|
|
|
|
| Zitat von cms
Bin ich eigentlich der einzige, der merkt, dass es augenscheinlich um eine Übungsaufgabe geht?
Ja, es gibt nur einen Grund, das Rad neu zu erfinden: Man will etwas über Räder lernen. Und G-Shocker will, so wie es aussieht*, etwas über Räder lernen. Also ist natürlich die beste Idee, dass er zum Reifen-Händler fährt, sich dort eine Felge und einen Reifen kauft und sich das anschließend in einer Werkstatt den Reifen auf die Felge ziehen lässt. Nicht.
* Denn mal ganz im Ernst: Welcher Kunde/Chef will, dass man ein Konsolenprogramm schreibt, das eine Zeile einliest und dann das letzte Wort der Eingabe in Großbuchstaben ausgibt.
| |
Darum ging es mir nicht, sondern um deine Flak-Aussage. Man sollte immer ähnliche Mittel wählen und konsistent arbeiten. Nicht mal hü oder hop, deine Mitarbeiter, die später mal deine Projekte übernehmen oder du selber 2 Jahre später, werden es dir danken.
|
|
|
|
|
|
|
Ich bräuchte mal ein Rat bezüglich Promotionsstellen, ich kenne den Stellenmarkt jetzt nicht wirklich aber ich habe nächste Woche ein 'Vorstellungsgespräch' für eine Promotionsstelle.
Mir stellt sich aber die Frage: "Nehme ich das was ich kriege, auch wenn das Thema nicht 100% zu meinen Intressen passt oder suche ich lieber weiter?"
Es geht um theo. Elementarteilchen, aber hier hocken doch einige schon rum mit nem Doktor, vielleicht hat sich einer von euch die Frage ja auch schonmal gestellt und kann aus seiner Erfahrung dazu was sagen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SilentAssassin am 30.03.2013 14:02]
|
|
|
|
|
|
Du musst dich ein paar Jahre damit rumschlagen und da wäre es schlecht, wenn dich das Thema nicht 100% anspricht. Es wird an der Arbeit immer Teilaspekte geben, die einen nerven, schließlich kommen mit einer Doktorandenstelle neben den fachlichen auch noch andere Pflichten. Denk dran, du machst nen richtigen Doktor. Also mit Dispuation, Peer-Review Papern, Konferenzbeiträgen und null vorgegebenem Text. Ohne Überzeugung und Motivation wird das nix.
Ich hatte auch zwei, drei Gespräche in meinem Arbeitsgebeit, aber die Themen haben mich nie restlos überzeugt. Die Stellen habe ich daher allesamt abgesagt.
Achte auch darauf, dass du kompetente Kollegen hast, mit denen man vielleicht auch mal abends beim Bier unterhalten kann. Man ist kein Einzelkäpmfer und im Dialog haben sich schon so einige Problemchen erschlagen lassen.
|
|
|
|
|
|
|
Was horschti sagt, mach definitiv ein Thema das dir gefällt und keine Kompromisslösung. Doktorandenstellen gibt es genug, es wird auch eine geben, die dir zusagt.
|
|
|
|
|
|
|
Natürlich muss dir das Thema gefallen, aber 100% überzeugt musst du meiner Meinung nach nicht sein.
1. Themen ändern sich gerne mal, aus welchen Gründen auch immer. Besonders in der Theorie, wenn du nicht gerade eine gegebene Software modifizieren sollst oder so, ist das Thema häufig gar nicht so klar festgelegt.
2. Ein guter Betreuer, gutes Arbeitsumfeld etc. ist mindestens genau so wichtig.
3. Sooo viele Doktorandenstellen dürfte es in der Teilchenphysik nun auch nicht geben, oder? Das Thema ist ziemlich hip und leider läuft bei Promotionsstellen sehr viel über Kontakte. Bei uns im Graduiertenkolleg hatte jeder Prof seine Kandidaten schon bevor die Bewerbungsphase überhaupt los ging.
Ich bin noch nicht so lange dabei wie meine Vorredner, aber das ist so meine Meinung. Und nochmal: Natürlich muss dir das Thema auch gefallen, aber meiner Meinung nach muss es nicht "perfekt" sein.
|
|
|
|
|
|
|
Die Doktorandin, die meine Bachelor-Arbeit betreut hat, hat mir folgendes gesagt: Von den drei Sachen (Professor, Kollegen, Thema) sollen mindestens zwei stimmen, aber alle drei können/werden sich ändern und vom Prof. wirst du sowieso nicht so viel sehen Aber generell würde ich die Leute/Gruppe als wichtigstes ansehen. Bei der Gruppe, bei der ich die Bachelor-Arbeit gemacht habe, wurden die Leute auch nach "Geselligkeit" ausgewählt, sprich mussten zur Gruppe passen. Dementsprechend war die Stimmung auch super. Bei anderen Gruppen hatte ich nicht so das Gefühl.
-----
Kennt wer ne Webseite, auf der man Industrie-Praktika im Ausland findet? Habe zwar einige Kontakte, aber weitere Quellen, wären schon nicht schlecht. IAESTE kenn ich, aber da war die Auswahl nicht so toll
|
|
|
|
|
|
|
Und deshalb bin ich so auf eine Stelle in Wellington scharf: Die Themen finde ich interessant, der Prof muss unheimlich motivierend und gut betreuend sein, und die Leute von der Arbeitsgruppe waren auch unheimlich sympathisch.
Jetzt hoffe ich nur, dass das alles klappt. Genau wie der Antrag auf Verlängerung in Mathe - der Prüfungsvorsitz war zuversichtlich, die Sekretärin mehr so "niemals".
No no, marriage is girl code for "abandon all hope, ye who enter here."
|
|
|
|
|
|
|
| Zitat von Wraith of Seth
die Sekretärin mehr so "niemals".
| |
Wenn ich sowas lese krieg ich schon wieder die Krise. Warum überschätzen so viele Verwaltungsangestellte in der Uni ihre Kompetenzen? Wenn ich überlege, wie gerne mal Prüfungsordnungen nach Tagesform ausgelegt oder völlig neue Regelungen erfunden werden...
|
|
|
|
|
|
|
Joa, die meinte auch "Fachschaftsarbeit wäre meine Sache, das könne man nicht anrechnen.". Ey...!
"It kisses the boy or it gets the hose again."
|
|
|
|
|
|
|
Danke für die vielen Antworten
Der Prof wäre auch gleichzeitig mein Betreuer und was ich so von anderen Doktoranden gehört habe, nimmt er sich extrem viel Zeit für einen, von daher passt das von der Seite schonmal.
| Zitat von Oli
1. Themen ändern sich gerne mal, aus welchen Gründen auch immer. Besonders in der Theorie, wenn du nicht gerade eine gegebene Software modifizieren sollst oder so, ist das Thema häufig gar nicht so klar festgelegt.
| |
Genau darum stell ich mir die Frage. Die Situation is folgende: Prof hat 2 stellen frei, wir sind aber 3 Intressenten Und zudem ist ein Thema fix, da müsste man dann selber ein Programm schreiben, wo man vorher die Theorie ausarbeiten muss. Das fixe Thema deckt sich aber zum Teil mit dem Thema meiner Masterarbeit.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SilentAssassin am 30.03.2013 20:44]
|
|
|
|
|
|
Hat dich das Thema deiner Masterarbeit interessiert? Ist die Arbeitsgruppe allgemein freundlich, organisiert und kompetent?
Der Post klingt, als hättest du dich schon fast entschieden.
|
|
|
|
|
|
|
Python: Ich habe ein Iterable mit, ungefähr, folgender Struktur jedes Elementes:
(ID, Name, Parent)
Parent kann wieder eine ID sein oder None, wenn es ganz oben im Baum ist. Die Elemente haben eine Funktion children(), die die Kinder zurückgibt, ich aber wenn möglich vermeiden will.
Ich möchte eine Mailing-List-ähnliche Auflistung der items haben:
|
Code: |
Root1
-- Child1
-- -- Child2
-- Child3
Root2
-- Child4
-- Child5
-- -- Child6
-- -- -- Child7 |
|
usw. Die Liste ist ungeordnet. Wie sortiere ich das ganze am effizientesten in so eine Baumstruktur? Möglichst indem ich die Liste nur einmal durchlaufe. Geht um Datenbank Objekt und ich will Queries sparen. Gerne nehme ich auch eine SQL Query (oder django code), der das automatisch richtig sortiert.
/e: Es gibt eine django app für sowas, https://github.com/django-mptt/django-mptt/, aber ich will ungerne eine weitere dependecy in mein Projekt einführen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 31.03.2013 20:57]
|
|
|
|
|
Thema: pOT-lnformatiker, Mathematiker, Physiker XII ( Jetzt mit Primzahlen > 1024 ) |
|