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

Java - pętla for

+2 głosów
789 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 (283,300 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,580 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,580 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 (283,300 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,580 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ź 287 wizyt
pytanie zadane 5 stycznia 2020 w C i C++ przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
1 odpowiedź 1,175 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 1,240 wizyt
pytanie zadane 8 października 2019 w C i C++ przez rel Początkujący (340 p.)

93,729 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,288 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...