• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pętle w metodzie

0 głosów
153 wizyt
pytanie zadane 14 kwietnia 2018 w Java przez Adrian Paź Obywatel (1,270 p.)

Witam pomoże ktoś rozwiązać moje problemy? Chodzi o to że gdy zostanie wyłapany jakiś błąd wyjątek to chce żeby pętla się wykonała jeszcze raz. Zamiast tego:

1)Kolejna pętla się nie wykonuje

2)metoda zwraca niepożądaną wartość 0.0

3) Brak odpowiedniego komunikatu (errorMessage)

Ponadto przy każdym uruchomieniu programu wyskkakuje info o jakimś hot codzie i musze dawać za każdym razem opcję restart 

package ćw5;

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

public class Zad3
{

	public static void kolo(double r, int ix, int iy, int n)
	{

		int[] tabx = punkt_x(n);
		int[] taby = punkt_y(n);
		int i = 0;
		for (i = 0; i < n; i++)
			{
				if (Math.sqrt(Math.pow((tabx[i] - ix), 2) + Math.pow((taby[i] - iy), 2)) > r)
					{
						System.err.println("Punkt (" + tabx[i] + "," + taby[i] + ") znajduje się na zewnątrz koła.");

					} else
					{
						System.out.println("Punkt (" + tabx[i] + "," + taby[i] + ") znajduje się wewnątrz koła.");
					}

			}
	}

	public static int[] punkt_x(int n)
	{
		Random gen = new Random();
		int x[] = new int[n];
		for (int i = 0; i < n; i++)
			{
				x[i] = gen.nextInt(10) - 5;
			}
		return x;
	}

	public static int[] punkt_y(int n)
	{
		Random gen = new Random();
		int y[] = new int[n];
		for (int i = 0; i < n; i++)
			{
				y[i] = gen.nextInt(10) - 5;
			}
		return y;
	}

	public static void main(String[] args)
	{
		double r;
		int ix, iy;
		Scanner skan = new Scanner(System.in);

		int n;
		boolean isNotOk = true;
		do
			{
				try
					{
						System.out.print("Podaj promień koła: ");
						r = skan.nextDouble();
						System.out.print("Podaj współrzędne środka koła: ");
						ix = skan.nextInt();
						iy = skan.nextInt();

						do
							{
								System.out.print("Podaj liczbę współrzędnych do wylosowania: ");
								n = skan.nextInt();
								System.out.println();
							} while (n <= 0);

						Zad3.punkt_x(n);
						Zad3.punkt_y(n);

						Zad3.kolo(r, ix, iy, n);
						skan.close();
						isNotOk = false;
					} catch (java.util.InputMismatchException e)
					{
						System.err.print("\nWadliwe dane, popraw!\n\n");
						skan.nextLine();
					}
			} while (isNotOk);
	}

}

 

2 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2018 przez Wiciorny Maniak (66,480 p.)
Poczytaj o https://stackoverflow.com/questions/3779285/exception-thrown-in-catch-and-finally-clause

Finally bloku, wykonywanym finalnie mimo wszystko. Dodatkowo możesz wykonać pętle po skonsumowaniu wyjątku, a nastepnie jego wyrzucenie jak kolega podał wyżej
0 głosów
odpowiedź 14 kwietnia 2018 przez mbabane Maniak (71,540 p.)

W sumie masz taki kod w tym co podałeś w metodzie main.

Najprościej to zdaje się, że tak:

for(int i; i < n; i++)
{
   try
   {
       //kod
    }
    catch(Exception e)
    {  
         //kod gdy wystapi wyjatek
    }
}

A ten hot code (w sumie nigdy takiego czegoś nie miałem, więc jak coś to szukaj w google), może to przez nazwę pakietu ćw5. Chodzi mi o to że jest tam litera ć.

Podobne pytania

0 głosów
4 odpowiedzi 776 wizyt
pytanie zadane 20 lipca 2015 w C i C++ przez Decol Użytkownik (560 p.)
0 głosów
3 odpowiedzi 198 wizyt
0 głosów
4 odpowiedzi 121 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

67,129 zapytań

114,075 odpowiedzi

241,792 komentarzy

47,030 pasjonatów

Przeglądających: 213
Pasjonatów: 13 Gości: 200

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...