Java: Computer soll Zahl erraten?

Hallo, es geht um folgende Aufgabe: Der Spieler soll sich eine Zahl zwischen 1 und 1000 denken. Nun soll der Computer durch geschicktes Fragen innerhalb von 10 Versuchen diese Zahl erraten, natürlich ohne dass der Spieler ihm diese sagt. Meine Idee war, die Menge der möglichen Zahl als Intervall aufzufassen. Der Computer probiert es zunächst einmal mit der Mitte dieses Intervalls (am Anfang wäre es 500, denn 500 liegt genau in der Mitte von 1 und 1000). Dann fragt er den Spieler, ob die Zahl größer oder kleiner ist und passt dementsprechend das Intervall der möglichen Zahlen an, bis eben das Intervall so klein ist, bis er schließlich die richtige Zahl errät. Mit diesem Gedanken habe ich versucht, ein Programm zu schreiben, das aber leider nicht funktioniert und ich finde die Fehler einfach nicht selbst. Über Hilfe / Tipps würde ich mich sehr freuen! Danke!

import java.util.Scanner;
public class Aufgabe16 {
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    // k dient als Zählvariable für die benötigten Versuche
    int k = 0;
    double g1, g2, mitte;
    // g1 ist die linke Grenze des Intervalls, in der die Zahl liegen muss
    g1 = 0;
    // g2 ist die rechte Grenze des Intervalls, in der die Zahl liegen muss
    g2 = 1000;
    // mitte ist die Mitte des Intervalls
    mitte = -1;
    // n als Eingabe des Spielers
    int n = -1;
    System.out.println("Denke dir eine beliebige Zahl zwischen 1 und 1000.");
    
    do {
    // Versuche zählen
    k = k + 1;
    // Mitte des Intervalls berechnen
    mitte = (g2 - g1) / 2;
    System.out.println(mitte);
    System.out.println("Ist die Zahl größer oder kleiner?");
    System.out.println("Drücke 0 für kleiner); 1 für größer; 2 wenn richtig erraten");
    n = input.nextInt();
    
    if (n == 0) {
        // Zahl ist kleiner als die Mitte des Intervalls 
        // also rechte Intervallgrenze anpassen
        g2 = mitte;
    } else {
        if (n == 1) {
            // Zahl ist größer als die Mitte des Intervalls 
            // also linke Intervallgrenze anpassen
            g1 = mitte;
        } else {
            if (n != 2) {
                // Wenn man was anderes als 0, 1, 2 eintippt, kommt Fehlermeldung
                System.out.println("Inkorrekte Eingabe!");
            }
        }
    }
    
// while-Schleife, bis der Spieler 2 drückt (richtig erraten)   
} while (!(n == 2));
    
    input.close();
    System.out.println("Die Zahl wurde erraten. Sie lautet " + mitte + ".");
    System.out.println("Der Computer hat " + k + " Versuche gebraucht.");
    

} }

Computer, programmieren, Java, Zahlen, Code, Informatik
Java: Text einlesen und Häufigkeit der Buchstaben analysieren?

Hey! Ich möchte einen Text einlesen und die Häufigkeit der Buchstaben analysieren. Dazu habe ich folgenden Code geschrieben. Leider ist dort irgendwo ein Logikfehler versteckt, den ich aber nicht finde :( Das Programm tut nicht, was es soll. Es wird für alle Buchstaben die Anzahl 0 ausgegeben, was ja nicht sein kann. Ich wäre sehr dankbar, wenn jemand meinen Denkfehler findet. Dankeschön! P.S: hab erst vor 2 Wochen mit Programmieren angefangen, also verurteilt meinen Code nicht gleich ^^

import java.io.*;

public class Buchstabenstatistik { public static void main(String[] args) throws IOException{

    // Es werden 180 000 Buchstaben des Textes "time" eingelesen und in einem char Array 'buchstaben' gespeichert
    FileReader reader = new FileReader("d:\\time.txt");
    int n1 = 180000;
    char[] buchstaben = new char[n1];
    reader.read(buchstaben);
    reader.close();
    
    // Alle Buchstaben des englischen Alphabets werden in einem char Array 'alphabet' gespeichert
    char[] alphabet = {'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'};
    
    // Es wird ein neues int Array 'counter'angelegt, mit dem später gezählt werden soll, wie oft ein 
    // einzelner Buchstabe im Text vorgekommen ist
    int 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 = 0;
    // Anfangs wird jedem Element des counters der Wert 0 zugewiesen, da ja noch keine Buchstaben gezählt wurden
    int[] counter = {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};
    for (int i1 = 0; i1 < counter.length; i1 ++){
        counter[i1] = 0;    
    }
    
    // Jeder Buchstabe im Text (gespeichert im char Array 'buchstaben') wird mit jedem Buchstaben des englischen Alphabets
    // verglichen. Wenn sie übereinstimmen, wird der Array 'counter' an der jeweiligen Stelle im Array, der für einen
    // bestimmten Buchstaben steht, um 1 erhöht
    for (int k1 = 0; k < buchstaben.length; k++) {
        for (int k2 = 0; k2 < alphabet.length; k2 ++) {
            if (buchstaben[k1] == alphabet[k2]) {
                counter[k2] = counter[k2] + 1;
            }
        }   
    }
    // Die Anzahl jedes Buchstaben, der im Text vorgekommen ist, wird ausgegeben
    System.out.println("Anzahl der Buchstaben: ");
    for (int k3 = 0; k3 < counter.length; k3 ++) {
        System.out.println(alphabet[k3] + " : " + counter[k3]);
    }
    //Die prozentuale Häufigkeit der Buchstaben soll berechnet und ausgegeben werden
    // (Anzahl des Buchstaben im Text / Anzahl aller Buchstaben im Text) * 100% 
    System.out.println();
    System.out.println("Häufigkeit der Buchstaben in Prozent: ");
    double h1 = 0;
    for (int k4 = 0; k4 < counter.length; k4 ++) {
        h1  = (counter[k4] / n1) * 100;
        System.out.println(alphabet[k4] + " : " + h1 + " % ");
    }

}

}

Computer, IT, programmieren, Java, Code, Informatik, Häufigkeit
Laptop stürzt auf seltsame Weise ab?

Es handelt sich um einen OMEN Gaming-Laptop von HP

Es ist neu (Ende Juli-Anfang August erst gekauft)

OMEN by HP 17-an014ng lautet die genaue Modellbezeichnung

Plötzlich friert der Bildschirm ein und etwa 5-10 Sekunden später (ab diesem Zeitpunkt ist immer wieder verschiedenes passiert) nimmt der ganze Bildschirm gelegentlich eine Farbe ein, das letzte Mal zum Beispiel, gerade eben, wurde der ganze Bildschirm Beispielsweise gelb, dabei kam ein lautes, helles, schrilles Piepen und er ging aus und startete neu. Manchmal wurde der Bildschirm einfach direkt schwarz nach dem einfrieren. Manchmal mit, manchmal ohnr Piepen, manchmal mit Farbe, manchmal ohne.

Es ist schon oft passiert, dass dann nach dem Hochfahren zwar Windows geladen ist, sowie die explorer.exe, aber man sieht nur schwarz und den Mauszeiger und kann sonst nichts machen. (Da habe ich den Trick gefunden: Mit der Shift-Taste das Fenster fur die Einrastfunktion aufrufen und darüber zum Explorer/Computer/Arbeitsplatz finden und navigieren und Programme starten, die man verwenden möchte, aber die Benutzeroberfläche ist nicht geladen)

Das Problem mit dem schwarzen Bildschirm kam das erste Mal sogar DIREKT am Tag der Lieferung des Geräts vor. Ich hatte ihn zugeklappt, beim wiederaufklappen war dann alles schwarz. Ich konnte mich mit der vierstelligen PIN anmelden, aber es wurde nur alles noch schwärzer bzw. Im Anmeldebildschirm, der aber dieses Mal auch komplett schwarz war, waren einige weiße Umrandungslinien der Symbole zu sehen und ein typischer Windows10-Satz wie "versuche xyz zu Cortana zu sagen"

Was kann ich tun?

Spiele, Computer, Computerspiele, Windows, Betriebssystem, Technik, Notebook, Prozessor, Grafikkarte, HP, Informatik, Absturz, Windows 10, Laptop
Wie viel RAM sollte man einer VM mit Ubuntu zuweisen, so dass ein großes Programm flüssig läuft?

Hallo,

ich fange demnächst mein Informatik Studium an und brauche einen Laptop auf dem Java und C programmiert werden kann. Idee ist es nun neben dem Betriebssystem Win10 eine VM mit Ubuntu laufen zu lassen.

Im Studium wird vor allem dann später C mit Eclipse CPP geschrieben. Ich habe mal auf meinem alten Rechner geschaut wie flüssig es ohne Eclipse läuft bei 1 RAM zugewiesenen Speicher. Es laggt ein bisschen. Jetzt da Eclipse doch sehr anspruchsvoll ist vom RAM, weiß ich gar nicht wie viel ich der VM zuweisen soll. Vor allem kenne ich mich auch noch nicht besonders gut in VM's aus. Kann man da problemlos die Hälfte des eigenen RAM zuweisen, ohne das der Rest an Leistung verliert? Oder hatte ich eine "falsche" Version von Ubuntu geladen? Liegt es daran? Da ich herausgefunden habe, dass machen Internet User Linux mit 1 GB RAM laufen lassen und meinen das es schon zu viel ist? Oder liegt es an der VM das es laggt?

Es wäre sehr hilfreich wenn jemand der sich auskennt, sich meldet und mir bei den Fragen hilft.

Sollten spezielle Anforderungen für den Laptop entscheidend sein, dann teilt sie mir auch mit, da ein neuer Laptop gekauft in Planung ist. (Momentane Überlegung: min. 8GB RAM, ein aktueller i5 Prozessor und 15,6" Diagonale)

thx mfg werdas34

Computer, Technik, Linux, programmieren, Ubuntu, RAM, Eclipse, Informatik, Technologie, VM, Virtual machine, Spiele und Gaming, Laptop

Meistgelesene Beiträge zum Thema Informatik