Problem z wyjściem z nieskończoenj pętli while(true)

0

Witam wszystkich, z góry przepraszam tych dla których będzie to głupie pytanie (ucze się Javy od niedawna) ale do rzeczy. Otóż studiując książkę Thinking in Java ed 3 w rozdziale 4 w ćwiczeniach do rozdziału ,,Sterowanie kolejnością wykonania" są następujące ćwiczenia:

1.Napisz program generujący 25 liczb całkowitych losowo. Dla każdej wartości użyj if-else aby porównać czy jest ona większa, mni8ejsza bądź równa drugiej wylosowanej liczbie. (moje rozwiązanie poniżej)

import java.util.*;

public class practice {

public static void main(String[] args){
	  
    Random rand = new Random();
   	for(int i =0; i <= 25; i++)
   	{
   	  int r = rand.nextInt(100);
      if(i > r)
      {
      	System.out.println("Liczba: " + i + " była większa od wylosowanej: i=" + i + " ,r= " + r );
      }
    	else if(i < r)
      {
      	System.out.println("Liczba: " + i + " była mniejsza od wylosowanej i=" + i + " ,r= " + r );
      }
      	else if( i == r)
      {
      	System.out.println("Liczba: " + i + " była równa od wylosowanej i=" + i + " ,r= " + r );
      }
 }

}

ten kod dział (mogłem nawias zamykający obciąć kopiując), ale teraz mam zrobić:

  1. Zmodyfikuj program otaczając kod nieskończoną pętlą while. Ma się wykonywać do momentu przerwania go z klawiatury.

Dodam że w dotychczasowych rozdziałach nie miałem jeszcze wczytywania strumieni, znaków itp... proszę o podpowiedź jak to zrobić , naprawde nie mam pojęcia

0

Widac nie zrozumiales zadania. Porownujesz tutaj losowane liczby z iteratorem zamiast z druga wylosowana. Stworz np tablice int 25 elemtnowa, zainicjuj losowymi liczbami, potem w petli porownaj wszystkie do 2 elemntu tej tablicy. A co do drugiej czesci po prostu zrob petle while(true), bedzie ja mozna przerwac naciskajac na klawiaturze [ctrl]+[c] :P

0

Ogólnie nie wiem czy jest sens bawić się w takie rzeczy w konsoli, ale cóż:

import java.util.Scanner;
import java.util.Random;
import java.util.Date;

public class Main {
	public final static String action = "";

	private static int maximum = 100;
	private static long delay = 300;

	public Main() {
		System.out.println ("Uruchomiono:\t"+new Date());
		System.out.println ("Maksimum:\t"+maximum);
		System.out.println ("Opóźnienie:\t"+delay);
		System.out.println ("ENTER - start/wyjście");

		Generator gen = new Generator();

		Scanner scan = new Scanner(System.in);
		while(true) {
			String input = scan.nextLine();

			if(input.equalsIgnoreCase(action)) {
				if(gen.isAlive()) {
					gen.stop();
					break;
				} else {
					gen.start();
				}
			}
		}

		System.out.println ("Zakończono:\t"+new Date());
	}

	public static void main(String[] args) {
		if(args.length == 1) {
			try {
				maximum = Integer.parseInt(args[0]);
			}catch(NumberFormatException ex) {}
		} else if(args.length == 2) {
			try {
				delay = Long.parseLong(args[1]);
			}catch(NumberFormatException ex) {}
		}
		new Main();
	}

	private class Generator extends Thread {
		public void run() {
			Random rnd = new Random();
			int count = 0;
			while(true && count<Integer.MAX_VALUE) {

				int firstDigit = rnd.nextInt(maximum);
				int secondDigit = rnd.nextInt(maximum);

				System.out.println (count);
				System.out.println ("-----------------");
				System.out.println ("Liczba1 = "+firstDigit);
				System.out.println ("Liczba2 = "+secondDigit);
				if(firstDigit == secondDigit) {
					System.out.println ("Liczba1 = Liczba2");
				} else if(firstDigit > secondDigit) {
					System.out.println ("Liczba1 > Liczba2");
				} else {
					System.out.println ("Liczba1 < Liczba2");
				}
				System.out.println ("-----------------");
				count++;

				try {
					sleep(delay);
				}catch(InterruptedException ex) {}
			}//koniec while
		}
	}//koniec klasy Generator

}//koniec klasy Main
0

Hehe niepotrzebnie dałem while(true && count<Integer.MAX_VALUE), należy oczywiście dać
while(count<Integer.MAX_VALUE)

0

Witam, dziekuje za tak szybkie posty, to prawda porównuje liczby do iteratora a mam do 2 giej wylosowanej, i fakt najlepiej tablica, ale do tej pory w książce była tylko mała wzmianka o tym że są takowe....

...a napisany kod elegancki, działa naprawde fajnie ,ale obsługa wyjątków .... hmmm to chyba jeszcze nie moja liga ... chociaŻ po doczytaniu teorii w necie , wygląda na to że robi to się tak jak mi poradziliście - napisaliście :) dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1