2 programy,macierze i stringi.

0

Przerobienie programu
Zrobilem program ktory Od razu po wczytaniu nazwisk do tablicy sprawdza czy zaczyna sie od K do Z.
Problem polega na tym,że mimo prób nie wiem jak go przerobić,aby sprawdzal ten warunek juz po wczytaniu wszystkich nazwisk do tablicy.
Jakieś wskazówki?

/**
 * Auto Generated Java Class.
 * 
 * 
 * 
 * 
 * Program
wczytuje do tablicy 5 nazwisk i wypisuje te, które nie zaczynają się od liter od Ado K, a następnie wszystkie dłuższe, niż 5-cio znakowe

 */
import java.util.Scanner;

public class Nazwisko 
{
int liczba=0;
String []Tabela = new String[11];
String slowo = "L Ł M N Ń O Ó P R S Ś T U W Y Z Ź Ż ";

  String nazwisko=new String();

  public void Nazywanie(String[] tablica)
  {
    int liczba = 0;
    for(int d=0;d<11;d++)
     {
      
      Tabela[d]=Character.toString(slowo.charAt(liczba));
      liczba++;
    }
    int liczba2=0;
    
    Scanner skaner =new Scanner(System.in);
    
    for(int i=0;i<5;i++)
    {
      
     nazwisko=skaner.nextLine();
     
     tablica[i]=nazwisko;

     if(tablica[i].length()>5)
     System.out.println("wyraz jest dluzszy niz 5 liter wiec go wypisujemy "+nazwisko);

     String pobrany_z_nazwiska_znak = Character.toString(tablica[i].charAt(0));

     for(int d=0;d<11;d++)
     {

    if(pobrany_z_nazwiska_znak.equals(Character.toString(Tabela[d].charAt(liczba2))))
    {
       
         System.out.println("Wyraz zaczyna sie od L do Ż "+nazwisko);
    }
      
     }

    }
  } 
  
  public static void main(String[] args)
  { 
    String[] tablica = new String[5];
  
      
    Nazwisko nazw=new Nazwisko();
    nazw.Nazywanie(tablica);

  }
}

2 pytanie dotyczy zadania z macierza.
Tresc zadania :

Dla tablicy o rozmiarze 5 x 5 opracuj procedury:
A. inicjującą tablicę losowymi liczbami całkowitymi należącymi do przedziału [-100, 100);
B. wyprowadzającą zawartość tablicy wierszami na ekran;
C. obliczającą sumę elementów należących do wiersza o numerze i, gdzie 1 <= i <= 5;
D. obliczającą sumę elementów należących do kolumny o numerze j, gdzie 1 <= j <= 5;
E. sortujący niemalejąco każdy z wierszy tablicy;
F. sortujący niemalejąco każdą z kolumn tablicy;
G. znajdującą w tablicy element minimalny i maksymalny

Zrobiłem prawie wszystkie podpunkty.Nie wiem jak zrobić sortowanie babelkowe dla Kolumn,podpunkt F.
Pomoże ktoś?

**
 * Auto Generated Java Class.
 */
import java.util.*;
import java.util.Random;
public class Zad4 
{
   public  void wypelnianie(int [][]tab)
   {
        Random rand = new Random();
        for(int i=0;i<5;i++)
        for(int j=0;j<5;j++)
        tab[i][j]=rand.nextInt(201)-100;  
                
 for(int i=0; i<tab.length; i++){ // "Przejście" przez wiersze
   for(int j=0; j<tab.length; j++)        

                System.out.print(tab[i][j]+" ");
            System.out.println(); // Koniec kolumn w danym wierszu - nowa linia
        }
   }
   public void wyprowadzanie_wierszami(int [][]tab)
   {
     System.out.println();
     System.out.println();

   }
    public void suma_elementow_wiersza_i(int [][]tab)
   {
     int suma=0;
     int i;
     Scanner skaner=new Scanner(System.in);

         System.out.println("\n\n\tPodaj numer wiersza ktorego elementy nalezy zsumowac : ");
          i=skaner.nextInt();

      if( i <= 5&&1 <= i)
      {
      for(int j=0;j<5;j++)
         suma+=tab[i-1][j]; 

         System.out.println("suma elementow wybranego wiersza wynosi " +suma);
      }
   }
   public void suma_elementow_kolumny_j(int [][]tab)
   {
      int suma=0;
     int j;

     Scanner skaner=new Scanner(System.in);

         System.out.println("\n\n\tPodaj numer kolumny ktorego elementy nalezy zsumowac : ");
           j=skaner.nextInt();

      if( j <= 5&&1 <= j)
      {

    for( int i=0;i<5;i++)
    {
         suma+=tab[i][j-1];

      }
System.out.println("suma elementow wybranej kolumny wynosi " +suma);   
      }   
   }

   public void sortowanie_niemalejaco_wierszy(int [][]tab)
   {
for(int i=0; i<tab.length; i++)
Arrays.sort(tab[i]);

      for(int i=0; i<tab.length; i++){ // "Przejście" przez wiersze
   for(int j=0; j<tab.length; j++)        
                System.out.print(tab[i][j]+" ");

            System.out.println(); // Koniec kolumn w danym wierszu - nowa linia
      }

   }
   public void sortowanie_niemalejaco_kolumn(int [][]tab)
   {

       for(int i=0; i<tab.length; i++)
{ 
   for( int j=0; j<tab.length; j++)        
            System.out.print(tab[i][j]+" ");
            System.out.println(); 

       }

   }
   public void max_i_min(int [][]tab)
   {
     int min=tab[0][0];
     int max=tab[0][0];

      for(int i=0;i<5;i++)
        for(int j=0;j<5;j++)
      {
        if(tab[i][j]>max)
          max=tab[i][j];

        if(tab[i][j]<min)
          min=tab[i][j];

      }
     System.out.println("max wynosi :"+max+"min wynosi : "+min);

   }
  public static void main(String[] args)
  { 
    Zad4 zad4=new Zad4();
    int [][]tab=new int[5][5];
    zad4.wypelnianie(tab);
    zad4.max_i_min(tab);
    zad4.suma_elementow_wiersza_i(tab);
    zad4.suma_elementow_kolumny_j(tab);
    zad4.sortowanie_niemalejaco_wierszy(tab);

    zad4.wyprowadzanie_wierszami(tab);
      zad4.sortowanie_niemalejaco_kolumn(tab);
  }

  /* ADD YOUR CODE HERE */
}
0

Jak to nie wiesz jak zrobić, żeby sprawdzał po wczytaniu do tablicy :P ?
Jeśli masz tablice stringów z nazwiskami. Przechodzisz przez nią pętlą. Z każdego stringa pobierasz pierwszą literę, przy pomocy charAt. Zwraca ona zmienna typu char jeśli się mylę, rzutujesz ją na inta i sprawdzasz czy jest to litera pomiędzy k i z. Czyli sprawdzasz czy dany int znajduję się pomiędzy 107, a 122 według ASCII. Dobrze przed tą operacją jest jeszcze zmienić wszystkie litery na małe.

Na podstawie tego możesz zbudować odpowiedni warunek.

0

Odnośnie pierwszego pytania:

public class A {
	public static void main(String[] args) {

		String[] tab = new String[]{"ALA","PIES","KOZA","ŻYRAFA","ŁABĘDŹ"};
		
		for(String surname : tab){
			if(surname.toUpperCase().matches("^[LŁMNŃOÓPRSŚTUWYZŹŻ].*")){
				System.out.println("String "+surname+" pasuje do wzorca");
			}
			else{
				System.out.println("String "+surname+" nie pasuje do wzorca");
			}
		}
	}
}
 

Da na wyjściu:

String ALA nie pasuje do wzorca
String PIES pasuje do wzorca
String KOZA nie pasuje do wzorca
String ŻYRAFA pasuje do wzorca
String ŁABĘDŹ pasuje do wzorca

Zainteresuje się wyrażeniami regularnymi.

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