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

Java - pętla for

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+2 głosów
492 wizyt
pytanie zadane 25 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)

Cześć, szukam wlasności, która na podstawie dwóch osobnych warunków if - jesli sa one prawdziwe to wypisze dany tekst dla przykladu - kod ponizej chce zrobic w dwoch ifach. 

          for(int i=1; i<=100; i++) {
			if(i%2 == 0) 
				System.out.println("Marco");
			if(i%9 == 0) 
				System.out.println("Polo");
			if((i%9 == 0) && (i%2 == 0)) {
				System.out.println("Marco Polo");

 

2 odpowiedzi

+1 głos
odpowiedź 25 kwietnia 2022 przez Wiciorny Ekspert (278,610 p.)

TERNARY operator w javie 

booleanExpression ? expression1 : expression2
 for(int i=1; i<=100; i++) {
  if(i%2 == 0) 
      System.out.println("Marco");
  if(i%9 == 0) {
      i%2 == 0 ? System.out.println("Marco Polo") : System.out.println("Polo");
  }
}

Rozwiązanie jeśli faktycznie to mają być 'warunki if' bo tak naprawdę to można rozwiązać bez zbędnego for ... w strumieniu 

komentarz 26 kwietnia 2022 przez VBService Ekspert (256,320 p.)

wink

		for (int i=1; i<=100; i++) {
          if (i%2 == 0) 
            System.out.println("Marco");
          if (i%9 == 0)
            System.out.println(((i%2 == 0) ? "Marco Polo":"Polo"));
        }

 

0 głosów
odpowiedź 26 kwietnia 2022 przez VBService Ekspert (256,320 p.)
edycja 26 kwietnia 2022 przez VBService

Inna propozycja, ale IMHO wersja, którą podał @Wiciorny jest "prostsza" w zapisie (nie są użyte dodatkowe zmienne, operacja trim(), replaceAll() smiley )

 

[ UPDATE ]

 

public class Main
{
    public static void main(String[] args) {
        for (int i=1; i<=100; i++) {
            if (i%2 == 0 && i%9 !=0) 
                System.out.println("Marco");
            if (i%9 == 0)
                System.out.println(((i%2 == 0) ? "Marco Polo":"Polo"));
        }
    }
}

 

propozycja  [ on-line ]

public class Main
{
	public static void main(String[] args) {
	    String message = "";
		for (int i=1; i<=100; i++) {
		    String text = "";
            if (i%2 == 0) 
                text = "Marco";
            if (i%9 == 0)
                text += " Polo";
            message += text.trim() + '\n';
        }
        System.out.print(message.replaceAll("(?m)^\\s*\\n", ""));
	}
}

 

komentarz 26 kwietnia 2022 przez Wiciorny Ekspert (278,610 p.)
ta propozycja odbiega juz od tego rozwiązania, liczb podzielnych przez 2 poiwnno być 50, liczb podzielnych przez 2 i 9 jest [18, 36 54, 72, 90], natomiast tutaj dodawane beda dodatkowe Marco, generalnie wychodzi prawdiłowa liczba Polo - 11, Marco Polo - 5, natomiast u Ciebie Marco sa czasami powielane i jest ich za duzo [ docelowo 50, tutaj 55]
Dla kazdego podwójnego Marco-Polo przed bedzie dodawal do textu [ Marco]
komentarz 26 kwietnia 2022 przez VBService Ekspert (256,320 p.)
edycja 26 kwietnia 2022 przez VBService

To w sumie był Twój pomysł  smiley

for(int i=1; i<=100; i++) {
  if(i%2 == 0) 
      System.out.println("Marco");
  if(i%9 == 0) {
      i%2 == 0 ? System.out.println("Marco Polo") : System.out.println("Polo");
  }
}

Ja go nieco "przerobiłem"

for (int i=1; i<=100; i++) {
  if (i%2 == 0) 
    System.out.println("Marco");
  if (i%9 == 0)
    System.out.println(((i%2 == 0) ? "Marco Polo":"Polo"));
}

w pewnym sensie powielając Twój błąd.  laugh

poprawione  [ on-line ]

public class Main
{
	public static void main(String[] args) {
        for (int i=1; i<=100; i++) {
            if (i%2 == 0 && i%9 !=0) 
                System.out.println(i + "Marco");
            if (i%9 == 0)
                System.out.println(((i%2 == 0) ? i + "Marco Polo" + i:"Polo" + i));
        }
    }
}
public class Main
{
	public static void main(String[] args) {
        for (int i=1; i<=100; i++) {
            if (i%2 == 0 && i%9 !=0) 
                System.out.println("Marco");
            if (i%9 == 0)
                System.out.println(((i%2 == 0) ? "Marco Polo":"Polo"));
        }
    }
}

 

 

P.S. Moja wersja działa prawidłowo

[ on-line ]

public class Main
{
	public static void main(String[] args) {
	    String message = "";
		for (int i=1; i<=100; i++) {
		    String text = "";
            if (i%2 == 0) 
                text = i + "Marco";
            if (i%9 == 0)
                text += " Polo" + i;
            message += text.trim() + '\n';
        }
        System.out.print(message.replaceAll("(?m)^\\s*\\n", ""));
	}
}

 

2
komentarz 26 kwietnia 2022 przez cfaniaczek Nowicjusz (200 p.)
Dziekuje za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
1 odpowiedź 791 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 999 wizyt
pytanie zadane 8 października 2019 w C i C++ przez rel Początkujący (340 p.)

93,174 zapytań

142,185 odpowiedzi

321,970 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...