Wpis z mikrobloga

Mirki mam problema. Robię sobie program w #java do liczenia azymutów, gdzie wczytuję po kolei numer punktu pierwszego oraz współrzędne (czyli Lp1, X1, Y1) oraz punktu drugiego (Lp2, X2, Y2). Chcę zrobić tak, by program powtórzył wczytanie danych, gdy współrzędne są sobie równe (X1==X2; Y1==Y2) oraz nazwy punktów są takie same (Lp1==Lp2). Próbuję to ogarnąć funkcją Do-While

do
{ //wczytanie nazw punktów oraz współrzędnych}
while ( (!(X1!=X2 || Y1!=Y2) && Lp1!=Lp2));

Gdy podam te same współrzędne (X,Y) obu punktów to program ładnie powtarza wprowadzenie danych. Jednakże przy wprowadzeniu tej samej nazwy punktów jest lipa i anomalie jak na dożynkach w Wąchocku :( Kombinuję na różne sposoby ale nie wychodzi :( Mirko pomusz!

#programowanie #programaboutvan
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SuperStefan: Skoro do powtórzenia wymagasz oprócz tych samych punktów różnych nazw to przy podaniu takich samych nazw nie powtórzy nigdy. Poza tym, z praw De Morgana zaprzeczenie alternatywy to koniunkcja zaprzeczeń, czyli początek to:

X1 == X2 && Y1 == Y2
A dalej to zgaduję, że ma po prostu powtórzyć jeśli nazwy punktów są takie same (niezależnie od wartości), więc

while (X1 == X2 && Y1 == Y2 || Lp1
  • Odpowiedz
@SuperStefan chcesz powtarzać wprowadzanie danych gdy współrzędne są takie same *oraz* nazwy są takie same? czy wykonywać powtórzenie gdy współrzędne *lub* nazwy są takie same? w tej chwili powtórzenie ci sie wykona gdy nazwy sa różne *i* coś tam coś tam.

pierwsza uwaga: stwórz klasę Point która będzie przechowywać parę X, Y oraz nazwę. niech będzie rozszerzać metodę equals. idea która się za tym kryje to enkapsulacja i jest fundamentalna
  • Odpowiedz
@SuperStefan: Zakładam, że Lp1 i Lp2 to Stringi - porównywanie ich za pomocą == zazwyczaj zwróci false, nawet, gdy mają taką samą wartość. użyj Lp1.equals(Lp2). Google -> Java String comparison
  • Odpowiedz