2016-11-11 11 views
-2

このクラスには、このクラスを呼び出す別のクラスがあることが示されています。これは賭けに似ています - あなたは12文字を選択して配列に入れ、プログラムはランダムな文字セットを出力します。次に、一致した人の数を計算します。char配列パラメータを使用すると、どのようにソリューションに効果がありますか?

教師はchar[]タイプのパラメータがメソッドにあり、2つがチェックメソッドにあるはずだと教えてくれましたが、私はそれらの必要性を理解していません。私は奇妙な選択肢がなければ似たようなことができますが、私はそれに固執しています。したがって、誰かがその理由を理解していれば、私は不思議に思います。それはユーザーの入力のための方法であり、それはコンピュータが生成した無作為のためのメソッドなので、他のメソッドにパラメータを置かなければならない理由はわかりません。それが論理的な選択であるかどうか分かりません。

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

public class Tipping 
{ 
    char[] ukensRekke; 
    public Tipping() 
    { 
     ukensRekke = new char[12]; 
    } 

    public void WeekResult(){ 
     String HBU = "HBU"; 
     for(int i = 0; i < ukensRekke.length; i++){ 
      ukensRekke[i] = HBU.charAt((int)(Math.random()*3)); 
     } 
    } 

    public char[] getWeekResult(){ 
     return ukensRekke; 
    } 

    public void print(char[] tastet){ 
     tastet = new char[12]; 
     for(int i = 0; i < tastet.length; i++){ 
      System.out.print(tastet[i]); 
     } 
    } 

    public char[] register(){ 
     Scanner scan = new Scanner(System.in); 
     char[] vinnerTall = new char[12]; 
     for(int i = 0; i < vinnerTall.length; i++){ 
      System.out.println("Skriv inn H,B eller U for kamp" + (i+1) + "; "); 
      vinnerTall[i] =scan.next().charAt(0); 
      System.out.println(vinnerTall[i]); 
     } 

     return vinnerTall; 
    } 

    public int check(char[] original, char[] tastet){ 
     original = ukensRekke; 
     tastet = register(); 
     return tastet.length; 
    } 
} 

UPDATE:

コードが割り当て解決するこんにちは、私は多少の問題を解決することができたが、それはまだ1つの最後の仕上げです。ここに問題のあるコードの一部があります。誰かが私を助けてくれることを願っています。

System.out.println("Klassen Tipping instansieres..."); 
    System.out.println(); 
    System.out.println("Ukens rekke genereres..."); 
    System.out.println(); 
    System.out.println("Brukers rekke registreres."); 
    tp.register(); 
    System.out.println(); 
    System.out.println("Ukens rekke hentes..."); 
    System.out.println(); 
    System.out.println("Ukens rekke;"); 
    tp.print(tp.getWeekResult()); 
    System.out.println("Brukers rekke;"); 
    tp.print(tp.register()); 
    System.out.println(); 
    System.out.println("Bruker hadde" + tp.check(tp.getWeekResult(),tp.register()) + "riktige tippetanger"); 

これは私がちょっとシートのように、それは画面上のすべてを出力し、ユーザの入力がかかりますが、最後の二つのメソッド呼び出しが動作しない、プログラムはそれをスキップするために使用するクラスですもう一度始めます。

、これはから呼び出される私が使用するコードです:

public void WeekResult(){ 
     String HBU = "HBU"; 
     for(int i = 0; i < ukensRekke.length; i++){ 
      ukensRekke[i] = HBU.charAt((int)(Math.random()*3)); 
     } 
    } 

    public char[] getWeekResult(){ 
     return ukensRekke; 
    } 

    public void print(char[] tastet){ 
      System.out.print(taste); 
    } 

    public char[] register(){ 
     Scanner scan = new Scanner(System.in); 
     char[] vinnerTall = new char[12]; 
     for(int i = 0; i < vinnerTall.length; i++){ 
      System.out.println("Skriv inn H,B eller U for kamp" + "; "); 
      vinnerTall[i] = scan.next().charAt(0); 
     } 

     return vinnerTall; 
    } 
+0

あなたの現在のプリント機能は意味をなさない、私はそれが何を印刷するかを知っていると言えば、私は嘘をついているだろうが、私はあなたが期待するものではないことを保証する。 – Geoff

+0

申し訳ありませんが、それは混乱したコードでしたが、それはもともとその方法ではありませんでしたが、それはなぜ私の頭を掻き回して、パラメータにchar []があるべきかを理解しようとした結果でした。それは私の先生がそれがほしいと思う方法のようではありません –

+0

あなたは元の質問から移行する傾向があります。私たちは各投稿ごとに1つの質問にしか答えることができません。 – progyammer

答えて

0

あなたの教師は、単に少ないメモリを使用するようにStringオブジェクトの上char[]配列を使用するように求められます。

この質問への回答(複数可)を読む:答えのHow much memory does a string use in Java 8?

一つは、Stringオブジェクトがメモリ内80 (-8) bytesの最小値をとることを示しています。あなたの場合、文字配列ukensRekke12 * 2 = 24 bytesだけ必要です。したがって、メモリの使用量は少なくなります。これは良いアドバイスです。効率的なプログラムを作成するには、これらの効率要因を常に念頭に置いておく必要があります。

関連する問題