Hilfe bei meinen Uni aufgaben gesucht :)

Java™ Quelltext ist bitte in ```-Tags zu schreiben: hier Java Code einfügen

Ach habe da noch einen Fehler entdeckt habe System.out.println(isTriangle); veraendert in: System.out.println(Triangle); Aber auch dann bleiben es 3 Fehler

Das solltest du andersherum machen. Deine boolean Variable sollte niemals so heißen, wie deine Klasse (und nicht großgeschrieben werden), deshalb ändere Triangle in isTriangle überall dort wo du diese Variable nutzt.

ansonsten sollte es so
isTriangle = isTriangle || (b == (a+c)); // für b ist gleich (a+c)
oder so
isTriangle = isTriangle || (b < (a+c)); // für b ist kleiner (a+c)
oder so
isTriangle = isTriangle || (b <= (a+c)); // für b ist kleiner gleich (a+c)
oder so
isTriangle = isTriangle || (b > (a+c)); // für b ist größer (a+c)
oder so
isTriangle = isTriangle || (b >= (a+c)); // für b ist größer gleich (a+c)
oder so
isTriangle = isTriangle || (b != (a+c)); // für b ist ungleich (a+c)

je nachdem was du brauchst.

Warum nicht

isTriangle = (a>b+c) || (c>a+b) || (b>c+a);

So bin ja jetzt schon bei Aufgabe 4 (von 5)
Forht exercise (1.2.28) Order check. Write a program that takes three double values x, y, and z as command-line arguments and prints true if the values are strictly ascending or descending (x<yy>z), and false otherwise.

Meine Lösung:

  public static void main (String[] args){
    double x = Double.parseDouble(args[0]);
    double y = Double.parseDouble(args[1]);
    double z = Double.parseDouble(args[2]);
    boolean Order;
    Order = (x<y<z);
    Order = Order || (x>y>z);
    System.out.println(Order);
  }
}```

Und die passenden Fehler dazu:
C:\Test>javac Order.java
Order.java:7: error: > expected
Order = (x<y<z);
              ^
Order.java:7: error: ')' expected
Order = (x<y<z);
               ^
2 errors

immerhin nur 2 Fehler ist aber doch komisch hat doch bei der anderen augabe auch funktioniert!

Eine solche “Verkettung” geht nicht. Du musst das in einzelne Ausrücke zerlegen und mit && kombinieren.

Du kannst immer nur zwei Werte miteinander vergleichen: Also statt x < y < z => x < y && y < z.

Bitte schreibe auch die Variablennamen klein. Variablen beginnen in Java immer mit einem Kleinbuchstaben.

Und im übrigen würde ich dir eine IDE zur Entwicklung empfehlen. Eclipse ist für Java sehr beliebt… :wink:

@Kilobyte vielen Dank
darauf basierend die neue Idee:

public class Order {
  public static void main (String[] args){
    double x = Double.parseDouble(args[0]);
    double y = Double.parseDouble(args[1]);
    double z = Double.parseDouble(args[2]);
    boolean Order;
    Order = (x<y);
    Order = Order && (y<z);
    Order = Order || (x>y);
    Order = Order && (y>z);
    System.out.println(Order);
    }
}```

der dazu gehoerende Fehler: 
C:\Test>java Order 3,554 6,778 9,776
Exception in thread "main" java.lang.NumberFormatException: For input string: "3
,554"
        at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
        at java.lang.Double.parseDouble(Unknown Source)
        at Order.main(Order.java:3)

lies dir bitte mal meinen Post durch. Du wiederholst deine Fehler!

@Natac hatte ich eigentlich auch vor und mit eclipse angefangen unser prof hat aber dann vorgegeben das wir notepad++ nutzen sollen :frowning: Der Kurs ist gedacht zum einstieg um einen ueberblick mit Hilfe von Java ueber alle programmiersprachen zu bekommen.

*** Edit ***

@byte habe diesen langen post erst jetzt entdeckt (hatte nicht auf refresh gedrueckt… sorry)

probiere mal statt
C:\Test>java Order 3,554 6,778 9,776

jenes
C:\Test>java Order 3.554 6.778 9.776

  1. Bitte benutze ```-Tags für den Code im Forum, der Hinweis kam schon zwei Mal
  2. Dezimalzahlen werden mit “.” getrennt
  3. Gewöhn dir den Stil mit den boolschen Ausdrücken getrennt nach Zeilen nicht an, du hast dir damit gerade das Problem eingehandelt, dass du keine Klammern setzen kannst.

Beispiel:
Für x=1 y=2 z=3

Order = Order && (y<z); //true && true = true
Order = Order || (x>y); // true || false = true
Order = Order && (y>z); // true && false = false```

Gruß

Und Variablennamen bitte klein schreiben!

Dein Code enthält noch einen logischen Fehler: Wenn die ersten beiden Bedingungen true ergeben, wird die letzte garantiert false sein. Spiel das mal durch. Besser du machst das mit zwei Variablen: Eine für kleiner als und eine für größer als:

boolean klAls = (x < y) && (y < z);

Rest dürfte klar sein.

LG

@Annefranz : Ich habe jetzt schon mehrere Posts von dir nachträglich angepasst. Tu mir/uns bitte einen gefallen und nutze Java-Tags + rücke in diesem Zuge deinen Code korrekt ein. Hier mal ein Beispiel: [noparse]String beispiel = "Hallo Welt";[/noparse]. Das ganze wird dann später so dargestellt:
String beispiel = "Hallo Welt";
Da hilft dann deinen Helfer ungemein deinen Code besser lesen zu können.

Meine letze Aufgabe fuer das 1. Aufgabenblatt…
Fifth exercise (1.2.34) Three-sort. Write a program that takes three int values from the command-line andprints them in ascending order. UseMath.min() and Math.max().

Der Java code (diesmal richtig leserlich :wink: )

public static void main(String[] args){
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
int min;
int max;
min = Math.min (a,b);
min = Math.min (min,c);
max = Math.max (a,b);
max = Math.max (max,c);
System.out.println(min);
System.out.println(!min&&!max);
System.out.println (max);
}
}

Was heraus kommt:
C:\Test>javac Three.java
Three.java:13: error: bad operand type int for unary operator ‚!‘
System.out.println(!min&&!max);
^
Three.java:13: error: bad operand type int for unary operator ‚!‘
System.out.println(!min&&!max);
^
2 errors

Vielen Dank fuer eure Gedult und eure hilfe. Jetzt wisst ihr wie das erste Aufgabenblatt in Computerwissenschaften (Programmieren 1) der Uni Island aussieht.

Wenn du in Island studierst müsstest du ja Englisch können, oder?

Wie würdest du das

Three.java:13: error: bad operand type int for unary operator ‘!’

in etwa übersetzen.

    public static void main(String[] args){
       int a = Integer.parseInt(args[0]);
       int b = Integer.parseInt(args[1]);
       int c = Integer.parseInt(args[2]);
       int min;
       int max;
       min = Math.min (a,b);
       min = Math.min (min,c);
       max = Math.max (a,b);
       max = Math.max (max,c);
       System.out.println(min);
       //System.out.println(!min&&!max);
       //hier könnte in einer Schleife ein Array durchlaufen werden, testen ob der jeweilige Wert != min && Wert != max ist und bei true den Wert ausgeben
       System.out.println (max);
    }
}```

Aber wahrscheinlich weißt du weder, was eine Schleife, ein If-Else oder ein  Arrays ist, oder?

Das habe ich schon gehört, darf aber if analyse noch nicht nutzen leider nur die einfachste mittel… sonst gibt es punkt abzug wenn man was macht was noch nicht dran war
:frowning:

*** Edit ***

Schleife darf ich auch noch nicht nutzen :frowning:

Nochmal:
Wie würdest du das
Three.java:13: error: bad operand type int for unary operator ‘!’
in etwa übersetzen.

@Kiri ich wuerde uebersetzen dass er das ! nicht mag in kombination mit der int variable. Aber wie erklaert man ihm denn sonst dass man weder den minimum noch den maximum sondern den wert moechte der dazwischen ist. Und das ohne if und ohne schleifen aber mit Math.min und Math.max

20 Sekunden google:

http://introcs.cs.princeton.edu/java/12types/ThreeSort.java

(Sorry Kiri)