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

Java - pętla for

Object Storage Arubacloud
+2 głosów
283 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 (270,190 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 (253,340 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 (253,340 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 (270,190 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 (253,340 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ź 166 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
1 odpowiedź 523 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 802 wizyt
pytanie zadane 8 października 2019 w C i C++ przez rel Początkujący (340 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...