Java: Computer soll Zahl erraten?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Zunächst: Dein Ansatz ist richtig, nennt man binäre Suche und ist immer in log_2(n) zu schaffen. für 1000 ist log_2(n)<10, da 2^10=1024.

Du berechnest die Mitte falsch, das ist alles ;-). Schau Dir einfach mal das Beispiel mit den hypotetischen Intervallgrenzen 700 und 900 an.

Die Lösung ist eher g1+(g2-g1)/2 (oder für die Badboys (g1+g2)/2 - In Anlehnung an den Mittelwert/das arithmetische Mittel).

Addier auf deine Mitte mal noch deine Untergrenze drauf.

Folgendes Beispiel:
Untergrenze: 125
Obergrenze: 250
Gesucht: 146
Mitte = (250-125)/2=125/2=62,5~62

Das dürfte ziemlich daneben gehen mit der Rechnung ^^.

Der Computer nimmt die Zahlenfolge 512 256 128 64 32 16 8 4 2 1 und je nachdem ob du höher oder niedriger sagst wird die nächste Zahl dazugezählt oder abgezogen – funktioniert immer in 10 Versuchen.

Java Zufallszahlen Programm (for Schleife)?

Ich brauche Hilfe bei einem Programm. In diesem Programm geht es darum, dass der Computer sich eine Zahl zwischen 1 und 100 ausdenkt, welche der Nutzer dann erraten soll. Je nachdem ob die Zahl größer oder kleiner ist wird es dann ausgegeben. Man hat 10 Versuche, doch wenn ich die Zahl in z.B. 5 Versuchen erraten habe fragt mich das Programm trotzdem noch weiter nach der Zahl, so lang bis die 10 Versuche verbraucht sind. Und wie kann ich es schaffen, dass wenn die Zahl nicht erraten wird, dass das Programm sie dann am Ende ausgibt ? das ist das Programm bis jetzt:

//----------------------------------------------Variablendeklaration------------------------------------------ String Eingabe1; int Zahl; int Eingabe;

    Random rand=new Random();
    Zahl= rand.nextInt(100);
    

//-------------------------------------------------Schleife--------------------------------------------------------

    for (int Zähler=0; Zähler<10; Zähler=Zähler+1)
    {
        Eingabe1=JOptionPane.showInputDialog(null, "Geben sie ihre ausgedachte Zahl ein");
        
        Eingabe=Integer.parseInt(Eingabe1);
        

//-------------------------------------------------if-Anweisung-------------------------------------------------- if (Eingabe<Zahl) { JOptionPane.showMessageDialog(null, "Die Zahl ist größer.");}

        else if (Eingabe>Zahl)
        {JOptionPane.showMessageDialog(null, "Die Zahl ist kleiner.");}
        
        else 
        {JOptionPane.showMessageDialog(null,  "Die Zahl ist richtig.");}
        
...zur Frage

Was ist die Zahl neben meinem Snapchat Namen?

Bei jeder Person ist eine andere Zahl. Meisten über 1000. Bei bekannteren ist die Zahl grösser. Und wie bekommt man eine grössere Zahl?

...zur Frage

Kleiner als, größer als?

In meiner Mathearbeit steht "eine Zahl kleiner als 5 oder größer als 9 zu werfen" muss ich dann die 5 und die 9 mitrechnen?
Es geht um die Wahrscheinlichkeit bei einem dodekaeder (Würfel mit 12 zahlen) und ich weiß nicht ob es dann 1,2,3,4,5,9,10,11,12 oder 1,2,3,4,10,11,12 ist?!

...zur Frage

If-Else in eine Schleife binden(z.b while Schleife)(C++)?

Ich versuche die ganze Zeit if-Else in eine Schleife ein zu binden. So das der Benutzer nach der Eingabe nochmal das Gewünschte Eingibt(Alter).Aber irgendwie geht das nicht. Anstatt das die Zeile sich wiederholt wo der Benutzer sein Alter bestätigen muss, wird immer der eingegebene Alter wiederholt. Also wie schaffe ich es, das der Benutzer mit einer Schleife nach der Eingabe,noch mal sein Alter bestätigen muss. (Ich bin noch ein Anfänger)

Screenshot ist unten:

...zur Frage

Mein Java Programm gibt "Primzahl" 9 aus?!?!?!?!?

int zahl, Limit, P;

zahl = 1;                        //Primzahlen von...
Limit = 10;                      //...bis                     
boolean Prim = true;             // Prim = true wenn "zahl" eine Primzahl ist

System.out.println("Die Primzahlen zw. den Zahlen " + zahl + " und " + Limit + " sind: ");

while (zahl<=Limit) {            // solang "zahl" kleiner als "Limit" ist 
  if (zahl%2 == 0) {
    Prim = false; 

  } 
  if (Prim) {
    System.out.println(zahl);

  } 
  else{

    Prim = true;

  }
  zahl++;
}
...zur Frage

Mit Java Daten zu MySQL Datenbank hinzufügen

Ich habe ein Programm geschrieben, das Primzahlen errechnet. Ich würde diese nun auch gerne in einer MySQL Datenbank abspeichern, weiß aber nicht genau wie ich das anstellen soll (eigentlich habe ich überhaupt keine Ahnung :) ).

Hier das ursprüngliche Programm:

public class Primzahlen {
 public static void main (String[] args) {
  double d1;
  int[] p;
  p = new int[350000000];
  p[0] = 2;
  int a = 0;
  System.out.print("2, ");

  for(int Zahl = 3; Zahl < 2000000000; Zahl++) {

   for(int  b = 0; b < 2000000000; b++) {
    d1 = (double) Zahl/p[b];
    int i1 = (int) d1;
    //System.out.println(d1-i1 + "  Ergebnis " + Zahl+ "/" + p[b] + ": " + d1 + "  Zahl: " + Zahl + "  Divisor:  " + p[b] + "    " + p[0] + p[1] + p[2] + p[3]);

    if ((d1 - i1) == 0.0) {
     //System.out.println(Zahl + " ist keine Primzahl, sie ist durch " + p[b] + " teilbar.");
     break;
    } else {
     if((p[b]*p[b]) > Zahl) {
      System.out.print(Zahl + ", ");
      a++;
      p[a] = Zahl;
      break;

     }
    }
   } 
  }
 }
}

Und hier mein kläglicher Versuch die Zahlen in der Datenbank zu speichern:

import java.sql.Connection;
public class Primzahlen {
 public static void main (String[] args) {
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:4001?user=schueler&password=0");
  stmt = con.creatStatement();

  double d1;
  int[] p;
  p = new int[1000];
  p[0] = 2;
  int a = 0;
  System.out.print("2, ");

  for(int Zahl = 3; Zahl < 2000; Zahl++) {

   for(int  b = 0; b < 2000; b++) {
    d1 = (double) Zahl/p[b];
    int i1 = (int) d1;
    //System.out.println(d1-i1 + "  Ergebnis " + Zahl+ "/" + p[b] + ": " + d1 + "  Zahl: " + Zahl + "  Divisor:  " + p[b] + "    " + p[0] + p[1] + p[2] + p[3]);

    if ((d1 - i1) == 0.0) {
     //System.out.println(Zahl + " ist keine Primzahl, sie ist durch " + p[b] + " teilbar.");
     break;
    } else {
     if((p[b]*p[b]) > Zahl) {
      System.out.print(Zahl + ", ");
      a++;
      p[a] = Zahl;
      stmt.executeQuery(INSERT INTO schueler_primzahlen.primzahlen (Primzahl Nr. , Wert);
      VALUES (a, Zahl);


      break;

     }
    }
   } 
  }
 }
}

Ich wäre sehr froh, wenn jemand mich von den Qualen des "Herumprobierens" erlösen könnte.

...zur Frage

Was möchtest Du wissen?