Zwracanie sumy elementów kolumny lub przękątnej

0

Witam mam problem a mianowicie : metoda ma zwracać przekątną tablicy gdy suma elementów jest nieparzysta lub sumę środkowej kolumny gdy jest przeciwnie. Problem w tym że ma zwracać typ tablicowy a nie liczbowy.

public class IIIzadaine {


	public static void main(String[] args) {
		
		int[] tab2;
		int[][] tab1= new int[5][5];
		for(int i=0; i<tab1.length; i++){
			for(int j=0; j<tab1[i].length; j++){		
				tab1[i][j]= (int)(Math.random()*10);
				System.out.print(tab1[i][j]);
			}
			System.out.println();
		}
			System.out.println();
			IIIzadaine two = new IIIzadaine();
			tab2 = two.metoda(tab1);
			
			System.out.println();
		
	}
	public int[] metoda(int[][] slowo){
		int suma = 0;

			for(int i=0; i<slowo.length; i++){
				for(int j=0; j<slowo[i].length; j++){
					suma= suma + slowo[i][j];
					System.out.print(slowo[i][j]);
			}
				System.out.println();
				}
			System.out.println(suma);
			if (suma %2 ==0){
			}else{
				
			}

			return null ;
	}
	
	

}
	
0

Twoja metoda nie spełnia warunków zadania, ona ma zwracać tablicę - nie powinna niczego wypisywać.

    public int[] metoda(int[][] tab)
    {
            int suma = 0;
            int[] result;
            for(int i=0; i<tab.length; i++)
            {
                for(int j=0; j<tab[i].length; j++)
                {
                    suma= suma + tab[i][j];
                }
            }
            if (suma %2 == 0)
            {
                result = new int[tab.length];
                for(int i=0;i<tab.length;i++)
                {
                    result[i] = tab[i][i];
                }
                else
                {
                    result = new int[1];
                    suma = 0;
                    for(int i=0;i<tab.length;i++)
                    {
                         suma+=tab[i][2];
                    }
                    result[0] = suma;
                }
                return result;
           } 
      }
0

Te wyświetlenia to testowo tylko wprowadzałem. Ale co gdy ma zwrócić sumę elementów kolumny? właśnie to mnie zastanawia bo przecież nie zwrócę sumy. chyba że suma ma być zwrócona jako element tablicy.

            if (suma %2 == 0){
                result = new int[tab.length];
                for(int i=0;i<tab.length;i++){
                    result[i] = tab[i];i];

rozumiem że tu błąd i ma być tab[i][i]

i nie wiem dlaczego, ale przy }else{ żąda usunięcia lewej klamry.

public class IIIzadaine {

	public static void main(String[] args) {
		
		int[] tab2;
		int[][] tab1= new int[5][5];
		for(int i=0; i<tab1.length; i++){
			for(int j=0; j<tab1[i].length; j++){		
				tab1[i][j]= (int)(Math.random()*10);
				System.out.print(tab1[i][j]);
			}
			System.out.println();
		}
			System.out.println();
			IIIzadaine two = new IIIzadaine();
			tab2 = two.metoda(tab1);
			
			System.out.println();
		
	}


	   public int[] metoda(int[][] tab){
           int suma = 0;
           int[] result;
           for(int i=0; i<tab.length; i++){
               for(int j=0; j<tab[i].length; j++){
                   suma= suma + tab[i][j];
           }
           }
           if (suma %2 == 0){
               result = new int[tab.length];
               for(int i=0;i<tab.length;i++){
                   result[i] = tab[i][i];
           }else{
               result = new int[1];
               suma = 0;
               for(int i=0;i<tab.length;i++){
                  suma+=tab[i][2];
               }
               result[0] = suma;
           }

           return result;
           }
}


0
  1. Była literówka (średnik jest na klawiaturze blisko nawiasu [),
  2. Przepisałem tak, że widać iż nawiasy klamrowe są do pary.

Ale co gdy ma zwrócić sumę elementów kolumny?
Nie rozumiem, mój kod zwraca wtedy jednoelementową tablicę.

0

public class IIIzadaine {
	 
    public static void main(String[] args) 
    {
 
        int[] tab2;
        int[][] tab1= new int[5][5];
        for(int i=0; i<tab1.length; i++)
        {
            for(int j=0; j<tab1[i].length; j++)
            {        
                tab1[i][j]= (int)(Math.random()*10);
                System.out.print(tab1[i][j]);
            }
            System.out.println();
        }
            System.out.println();
            IIIzadaine two = new IIIzadaine();
            tab2 = two.metoda(tab1);
 
            System.out.println();
 
    }
 

    public int[] metoda(int[][] tab)
    {
            int suma = 0;
            int[] result;
            for(int i=0; i<tab.length; i++)
            {
                for(int j=0; j<tab[i].length; j++)
                {
                    suma= suma + tab[i][j];
                }
            }
            if (suma %2 == 0)
            {
                result = new int[tab.length];
                for(int i=0;i<tab.length;i++)
                {
                    result[i] = tab[i][i];
                }
                else
                {
                    result = new int[1];
                    suma = 0;
                    for(int i=0;i<tab.length;i++)
                    {
                         suma+=tab[i][2];
                    }
                    result[0] = suma;
                }
                return result;
           } 
      }
}

tak wygląda kod ale nadal krzyczy o nawiasy.
a jak rozumiem ta jednoelementowa tablica to suma kolumny.

1
    public int[] metoda(int[][] tab)
    {
        int suma = 0;
        int[] result;
        for(int i=0; i<tab.length; i++)
        {
            for(int j=0; j<tab[i].length; j++)
            {
                suma= suma + tab[i][j];
            }
        }
        if (suma %2 == 0)
        {
            result = new int[tab.length];
            for(int i=0;i<tab.length;i++)
            {
                result[i] = tab[i][i];
            }
        }
        else
        {
            result = new int[1];
            suma = 0;
            for(int i=0;i<tab.length;i++)
            {
                suma+=tab[i][2];
            }
            result[0] = suma;
        }
        return result;
    }
0

Ok chyba zrozumiałem dzięki. Tylko się jeszcze zastanawiam jak to wyświetlić w main.

0

Poważnie?

System.out.println(Arrays.toString(tab2));
0

Ok dzięki.

Temat do Zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1