2016-11-11 62 views
-2

該任務指出還有另一個類將調用此類。它與投注類似 - 選擇12個字符並將它們放入數組中,程序將輸出一組隨機字符。然後它會計算出有多少匹配。如何使用char數組參數有利於解決方案?

老師告訴我應該有char[]類型的參數print()方法和兩個在檢查方法,但我不明白他們的需要。沒有他奇怪的選擇,我可以做出類似的事情,但我堅持這一點。因此,我想知道,如果有人明白其中的原因。這是一種用戶輸入的方法,它是計算機生成的隨機數的一種方法,所以我不明白爲什麼我必須在其他方法上加一個參數。看不到這是一個合乎邏輯的選擇。

代碼來解決分配:

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:你好,我是有些能夠解決的問題,但它仍然是一個點睛之筆。以下是我遇到問題的部分代碼,希望有人能幫助我。

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

你正在傾向於從原來的問題轉移。我們只能在每個帖子上回答一個問題。 – progyammer

回答

0

你的老師要求你使用char[]陣列在String對象簡單地使用較少的內存。

閱讀的答案(S)對這個問題:How much memory does a string use in Java 8?

其中的答案表明,一個String對象佔用內存最少80 (-8) bytes。在你的情況下,char數組ukensRekke只需要12 * 2 = 24 bytes。所以使用較少的內存。這是一個很好的建議。你應該始終保持這些效率因素,以便能夠製作高效的節目。

相關問題