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

Java Tablice + Pętla

Cloud VPS
+2 głosów
347 wizyt
pytanie zadane 12 stycznia 2022 w Java przez michal441599 Użytkownik (530 p.)

Witam mam zrobić tak żeby wczytać od użytkownika 10 liczb i potem żeby dodało je do tablicy i pokazało na wyniku końcowym tylko te liczby które są podzielne przez 3 i jestem troche w martwym punkcie ;/

package com.company;

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int[] tablica= new int[10];
        int i;
        int t=3;
        System.out.println("Podaj 10 liczb");
        for(i=0; i< 10;i++){
            tablica[i]=getInt();
          if(tablica[i]%t==0){
                  System.out.println(tablica[i]);
              }else{System.out.println("ta liczba nie dzieli sie przez 3");}
          }System.out.println(Arrays.toString(tablica));
    }
    public static int getInt(){
        return new Scanner(System.in).nextInt();
    }
}

2 odpowiedzi

+1 głos
odpowiedź 12 stycznia 2022 przez Wiciorny Ekspert (281,530 p.)

Proszę całość zoptymalizowana pamiętaj że indeksowanie jest od 0, zatem od 0-9 będzie 10 elementów jest to też optymalniejsze niż dodatkowa rezerwa 1 elementu w pamięci 
 

int[] a=new int[9];
    Scanner sc=new Scanner(System.in);
        System.out.println("Wprowadz liczby...");
        for(int j=0;j==9;j++)
        a[j]=sc.nextInt();

dodatkowo 1 instancja skanera- nie takowe tworzenie nowego obiektu za każdym wywołaniem, potem zaczytanie odpowiednio i zapis 

0 głosów
odpowiedź 12 stycznia 2022 przez VBService Ekspert (256,600 p.)

Byłeś blisko, uporządkujmy kod.  wink

 

przykład  ( on-line )

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int length = 10;
        int numbers[] = new int[length];

        System.out.println("Podaj " + length + " liczb");
        for (int i=0; i<length; i++)
            // Pobranie 10 liczb od użytkownika i dodanie ich do tablicy
            numbers[i] = new Scanner(System.in).nextInt();
            
        System.out.println("\nWprowadzone liczby podzielne przez 3");    
            
        for (int i=0; i<length; i++)
            // liczby które są podzielne przez 3 z pominięciem zera
            if (numbers[i] % 3 == 0 && numbers[i] != 0)
                  System.out.println(numbers[i]);
    }
}

 

komentarz 12 stycznia 2022 przez Wiciorny Ekspert (281,530 p.)
edycja 12 stycznia 2022 przez Wiciorny
   int length = 10;
   int numbers[] = new int[length];

To jest niepotrzebnie ... Boilerplate code 

komentarz 13 stycznia 2022 przez HaKIM Szeryf (87,590 p.)
IMO. zmienna length jest przydatna, gdyż została użyta 4 razy. Jeżeli ktoś będzie chciał zmienić length z 10 na 5 i nie powiąże 10 w pozostałych linijkach kodu z tą samą wartością, co jest częstsze niż się wydaje, to buga mamy gwarantowanego.
komentarz 13 stycznia 2022 przez Wiciorny Ekspert (281,530 p.)
to również możesz zmienić te wartość inline, i korzystać z numbers.length. wcale nie musisz alokować dodatkowej pamięci na prymitywna wartosc ... inta, to jest java to nie jest c++ i to jest język obiektowy a jvm nie jest wydajna

Podobne pytania

0 głosów
1 odpowiedź 558 wizyt
pytanie zadane 7 listopada 2020 w Java przez stronek1899 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 908 wizyt
pytanie zadane 29 października 2020 w Java przez stronek1899 Nowicjusz (160 p.)
+2 głosów
2 odpowiedzi 622 wizyt
pytanie zadane 25 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)

93,464 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,844 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

Kursy INF.02 i INF.03
...