• 12-11-2015, 15:57:08
    #1
    Türkiye ligi için puan tablosu yaptım. Sadece puanları çoktan aza doğru sıralayamadım.

    Arrays.sort metodunu kullanınca anlamadığım şekilde puan hesaplama yanlış şekilde hesaplanıyor.

    ÖNEMLİ NOT:
    Arkadaşlar tavsiyelerinizi bekliyorum kodlama için şunu şöyle yapsan daha iyi olurdu gibisinden kod yapısı düzeni ve farklı fikirleri olanlar lütfen yorum yazsın.

    Program işleyişi: Oynanan maçlar, galibiyet ,mağlubiyet, beraberlik sayıları otomatik olarak üretiliyor. atılan ve yenilen gol de aynı şekilde otomatik olarak üretilmektedir. Oluşan verilere göre puan hesaplaması ve averaj hesaplaması yapılıyor.

    Örnek Çıktı:



    import java.util.Arrays;
    import java.util.Collections;
    
    public class SuperligPuanDurumu {
    	  static int galibiyet ,maxB;
    	   static int [] averaj=new int [18];
    	   static int [] Tpuan=new int [18];
    	public static void main(String[] args) {
    		 int [] puanlama =new int [18];
    		String [] TakimListesi=new String [18];
    		TakimListesi =new String [] {"Fenerbahçe", "Galatasaray","Beşiktaş","Trabzonspor","KayseriSpor",
    				"Osmanlıspor","ÇaykurRizepor","Eskişehirspor","Bursaspor","Başakşehir","Kasımpaşa",
    				"Gençlerbirliği","Antalyaspor","Gaziantepspor","Sivasspor","Mersin İ.Yurdu","Torku Konyaspor",
    				"Akhisar B.Spor"};
    		
    		int [] MacSayisi=new int [18];	
    		int [] Galibiyet=new int [18];	
    		int [] Maglubiyet=new int [18];	
    		int [] Beraberlik=new int [18];	
    		int [] AtilanGol=new int [18];	
    		int [] YenilenGol=new int [18];
    		int [] Averaj=new int [18];	
    		int [] Puan=new int [18];	
    		 //System.out.printf( "%15s% Sıra"+"Takım "+"Puan "+"O"+"G"+,);
     
    		System.out.printf("%-24s%-8s%-8s%-8s%-8s%-8s%-8s%-8s%s\n","Takım","O","G","B","M","AG","YG","AV","Puan");
    
    		 
    		 	int minimum=1,maximum=34;
    		int  uretilen_mac_sayisi = minimum + (int)(Math.random()*maximum);
    		
    		   for(int i=0;i<18;i++){
    		        MacSayisi[i] =uretilen_mac_sayisi;
    		    }
    		 
    		 int minG=0, maxG=uretilen_mac_sayisi;
    		 
    		 	for ( int i=0;i<18;i++) {
    		 		    galibiyet = minG + (int)(Math.random()*maxG);
    		 		Galibiyet[i]=galibiyet;
    		 	}
    		 	 
    		 	 int minB=0; int maxB[]=new int [18];
    		 	for ( int i=0;i<18;i++) {
    		 		 
    		 	     maxB[i] =( uretilen_mac_sayisi- Galibiyet[i]);
    		 	}
    		 	 
    		  
    		 	 int beraberlik;
    		  for ( int i=0;i<18;i++) {
    			 
    			 beraberlik=minB + (int)(Math.random()*maxB[i]);
    			 Beraberlik[i]=beraberlik;
    		 } 
    		 
    		  for ( int i=0; i<18; i++) {
    			  
    			  Maglubiyet[i]=uretilen_mac_sayisi - (Galibiyet[i]+ Beraberlik[i] );
    		  }
    		  
    		  
    		  int minGol=0,maxGol=120;
    			
    			
    			   for(int i=0;i<18;i++){
    				   int  AG = minGol + (int)(Math.random()*maxGol);
    			       AtilanGol[i] =AG;
    			        
    			    }
    		  
    			   
    			   for(int i=0;i<18;i++){
    				   int  YG = minGol + (int)(Math.random()*maxGol);
    			       YenilenGol[i] =YG;
    			        
    			    }
    		  
    		  AverajHesapla(AtilanGol, YenilenGol);
    		  
    		  for ( int i=0; i<18;i++) {
    		    puanlama[i]=Galibiyet[i]*3 + Beraberlik[i]*1;
    		  }
    	 // Arrays.sort(puanlama);
    		 
    		 
    		 
    		 for ( int i=17; i>=0; i--) {
    		 		
    				System.out.println(  ""+ TakimListesi[i] + "\t\t" +MacSayisi[i] +"\t" + Galibiyet[i] + "\t" + Beraberlik[i]+"\t"+Maglubiyet[i]+"\t"+AtilanGol[i]+"\t"+YenilenGol[i]+"\t"+averaj[i]+"\t" +puanlama[i] );
    		}
    
    		 	
    		 	
    		 	
    		 	
    		}
    	 
    	
    		   public static int [] AverajHesapla (int [] ag , int [] yg ) {
    		 		
    		 		 
    		 		
    		 		for ( int i=0 ; i<18; i++) {
    		 			
    		 			averaj [i]= ag[i] - yg[i];
    		 			
    		 		}
    		 		return averaj;
    		 		 }
    	 
    		  
    	
    	 
     
    	}
  • 12-11-2015, 19:45:47
    #2
    Selamlar,

    Yaptığınız programa baktım.Tavsiye, fikir vs istemişsiniz.Bir kaç şey söylemek isterim.

    Java object oriented tabanlı bir dil olduğu için öncelikle kodlama yaparken onu kullanmaya çalışmak daha iyi olacaktır.

    Mesela bir "FutbolTakımı(Takımismi t_ismi)" classınız olur. Galibet, maglubiyet, goller vs. vs. bu classın içinde olur.Bu classı kullanarak 18 tane takım objesi oluşturursunuz. Daha sonra yine yapacağınız işlemleri (galibiyet, puan hesaplamaları vs) bu objeler üzerinden yaparsınız.
    Sıralama yapmak için artık zorlanmanıza gerek kalmamıştır çünkü object oriented mantıgını kullandıgınız için her objenin yani her takımın puanına kolayca erişebilirsiniz. Bunları karşılaştırıp bir sıralama yaparak ekrana bastırırsınız.