2016-05-28 12 views
0

私は男の子の名前、愛情、憎しみ、崇拝のような感情のための1つの男の子のための3つの配列を作成し、3番目の名前は女の子のためのものです女の子。別の配列に配列を格納できますか?

各アレイの乱数を生成し、...(boys[]+" "+feelings[]+" "+girls[])のような出力を与えるように接続しました。例えば、Sagar hates Sakshiです。

ここでは、この文は男の子に関するものです.のような女の子に対して別のストリングを生成したいと考えています。今これらの新しく生成された文字列も無作為に印刷されるべきです。どうすればいいですか?

私のソースコードは、このようなものです...

public class Random 
{ 
    public static void main(String args[]) 
    { 
     String[] boys={"shivam","shubham","sagar","Tushar","tarun"}; String[]=girls{"payal","preeti","neetika","sakshi_jain","sakshi_singh","wafa","Reshu","Pragya"}; 
     String[] feelings={"Love","Hate","Adore","want_to_kill"}; 

     int x=boys.length; 
     int y=girls.length; 
     int z=feelings.length; 

     for(int i=0;i<10;i++) 
     { 
      int rand1=(int)(Math.random()*x); 
      int rand2=(int)(Math.random()*y); 
      int rand3=(int)(Math.random()*z); 

      String phase1=girls[rand2]+" "+feelings[rand3]+" "+boys[rand1]; 
      String phase2=boys[rand1]+" "+feelings[rand3]+" "+girls+[rand2]; 
      String[][] phase={phase1,phase2}; 

      int p=phase.length; 
      int q=(int)(Math.random()*p); 

      System.out.println(phase[0][q]); 
     } 
    } 
} 

答えて

0

あなたは文字列のペアを格納し、「フェーズクラス」を格納するのArrayListを使用するラッパークラス(フェーズ)を宣言することができます。

import java.util.ArrayList; 

public class Test 
{ 
    public static void main(String[] args) { 
     String[] boys={"shivam","shubham","sagar","Tushar","tarun"}; String[]girls={"payal","preeti","neetika","sakshi_jain","sakshi_singh","wafa","Reshu","Pragya"}; 
     String[] feelings={"Love","Hate","Adore","want_to_kill"}; 

     int x=boys.length; 
     int y=girls.length; 
     int z=feelings.length; 

     for(int i=0;i<10;i++) 
     { 
      int rand1=(int)(Math.random()*x); 
      int rand2=(int)(Math.random()*y); 
      int rand3=(int)(Math.random()*z); 

      String phase1=girls[rand2]+" "+feelings[rand3]+" "+boys[rand1]; 
      String phase2=boys[rand1]+" "+feelings[rand3]+" "+girls[rand2]; 

      ArrayList<Phase> phase = new ArrayList<>(); 
      phase.add(new Phase(phase1, phase2)); 

      int p=phase.size(); 
      int q=(int)(Math.random()*p); 

      System.out.println(phase.get(q)); 
      System.out.println("**************"); 
     } 
    } 
} 

class Phase { 
    String phase1; 
    String phase2; 

    public Phase(String p1, String p2) { 
     this.phase1 = p1; 
     this.phase2 = p2; 
    } 
    public String toString(){ 
     return phase1 + "\n" + phase2; 
    } 
} 
1

次の解決策を確認してくださいでした:

public class Random { 
    public static void main(String args[]) { 
     String[] boys = { "shivam", "shubham", "sagar", "Tushar", "tarun" }; 
     String[] girls = { "payal", "preeti", "neetika", "sakshi_jain", "sakshi_singh", "wafa", "Reshu", "Pragya" }; 
     String[] feelings = { "Love", "Hate", "Adore", "want_to_kill" }; 

     String[][] emotions = new String[2][]; 
     emotions[0] = new String[boys.length]; 
     emotions[1] = new String[girls.length]; 

     // boys emotions 
     for (int i = 0; i < boys.length; i++) { 
      String subject = boys[i]; 
      String verb = getRandomItem(feelings); 
      String object = getRandomItem(girls); 
      emotions[0][i] = subject + " " + verb + " " + object; 
     } 

     // girls emotions 
     for (int i = 0; i < girls.length; i++) { 
      String subject = girls[i]; 
      String verb = getRandomItem(feelings); 
      String object = getRandomItem(boys); 
      emotions[1][i] = subject + " " + verb + " " + object; 
     } 

     // printing two dimensional array 
     for (int i = 0; i < emotions.length; i++) { 
      for (int j = 0; j < emotions[i].length; j++) { 
       System.out.println(emotions[i][j]); 
      } 
     } 

    } 

    // returns a random element 
    private static String getRandomItem(String[] arr) { 
     int max = arr.length - 1; 
     int min = 0; 
     java.util.Random random = new java.util.Random(); 
     int index = random.nextInt(max - min + 1) + min; 
     return arr[index]; 

    } 
} 

を、私に結果を教えて?

関連する問題