2016-03-26 5 views
1

私はJavaを使用してEclipseでいくつかの問題に直面しています。私のコードでは、ベルリンのB-AC 7687 Bのようなドイツの車のナンバープレート番号が生成されていますので、3文字と4整数を見ることができます。ランダムに1つのライセンスを生成します。私はこれにmath.randomを使った。ユーザーが "2"を入力すると、同じでない2つのナンバープレート番号が必要になります。だからここに問題がある、私はランダムな原則を使用したが、常に同じナンバープレート番号を生成する。ユーザーが2を入力すると、2つの異なるライセンスが必要です。このためには、generateメソッドを2回以上起動する必要があります(ユーザーの入力に依存します)。ユーザー入力に依存するメソッドを開始するにはどうすればよいですか?ここに私のコードは次のとおりです。メソッドをさらに起動する

import java.util.*; 

public class Kennzeichen { 

char[] alphabet = new char[26]; 
char[] nummern = new char[10]; 

String teilstring; 
String teilnummern1, teilnummern2, teilnummern3, teilnummern4, teilnummern; 
String finale; 
int zahl = (int) ((Math.random()) * 25 + 1); 
int zahl1 = (int) ((Math.random()) * 25 + 1); 
int nummer1 = (int) (Math.random() * 9 + 1); 
int nummer2 = (int) (Math.random() * 9 + 1); 
int nummer3 = (int) (Math.random() * 9 + 1); 
int nummer4 = (int) (Math.random() * 9 + 1); 
char a = 65; //ascii 
char b = 48; // asci 
int zahler = 0; 
Scanner s = new Scanner(System.in); 
int eineZahl = s.nextInt(); 

public void arrayalphabet() { // generates an array alphabet A-Z 

    for (int i = 0; i < alphabet.length; i++, a++) { 
     alphabet[i] = a; 
    } 

} 

public void arraynummern() { //generates numbers between 0 and 9 
    for (int i = 0; i < nummern.length; i++, b++) { 
     nummern[i] = b; 
    } 
} 

public String generierekennzeichen() { // first char must be B  therefore alphabet[1] 

    return(teilstring = alphabet[1] + "" + alphabet[zahl] + "" + alphabet[zahl1]); 

} 

public String generierenummern() { // 4 numbers are generated and returned as total 
    teilnummern1 = nummern[nummer1] + ""; 
    teilnummern2 = nummern[nummer2] + ""; 
    teilnummern3 = nummern[nummer3] + ""; 
    teilnummern4 = nummern[nummer4] + ""; 
    return(teilnummern = teilnummern1 + teilnummern2 + teilnummern3 + teilnummern4 + ""); 

} 

public void print() { //prints the total license such as B-AD 7645 
    System.out.println(finale = teilstring + "-" + teilnummern); 
} 

public void erzeugestack() { //using stack, not that important(just practise 
    Stack<String> s = new Stack<String>(); 
    s.push(finale); 

} 

public void Abfrage() { // eineZahl is the input of the user, e.g 2 
    for(int i=0; i<eineZahl;i++){ 
     generierekennzeichen(); 
     generierenummern(); 
     print(); 
    } 
} 

public static void main(String[] args) { 
    Kennzeichen kennzeichen = new Kennzeichen(); 
    kennzeichen.arrayalphabet(); 
    // kennzeichen.generierekennzeichen(); 
    kennzeichen.arraynummern(); 
    // kennzeichen.generierenummern(); 
    kennzeichen.Abfrage(); 
    kennzeichen.erzeugestack(); 
} 

}

答えて

2

クラスを作成するときに番号nummer1を初期化し、nummer2 ...されているように見えます。したがって、メソッドを呼び出すたびに変更されることはありません。あなたがちょうど nummern[(int) (Math.random() * 9 + 1)] の代わりにnummern[nummer1],nummern[nummer2]の代わりに使用する必要があります使用した場合。

public String generierenummern() { // 4 numbers are generated and returned as total 
teilnummern1 = nummern[(int) (Math.random() * 9 + 1)] + ""; 
teilnummern2 = nummern[(int) (Math.random() * 9 + 1)] + ""; 
teilnummern3 = nummern[(int) (Math.random() * 9 + 1)] + ""; 
teilnummern4 = nummern[(int) (Math.random() * 9 + 1)] + ""; 
return(teilnummern = teilnummern1 + teilnummern2 + teilnummern3 + teilnummern4 + ""); 

また、同じことを文字で行う必要があります。

+0

うわー、働きました。どうもありがとうございました。問題は愛されている。好きだよ – Blnpwr

1

プレートを生成するために使用しているインデックスは、プレート生成メソッドへのすべての呼び出しで同じになるように、1回(クラスをスタンスする時間)割り当てられます。代わりに、次のような方法generierekennzeichen()generierenummern()内でそれらを見つけるしてみてください、最初の場所でこれらの変数を初期化する:

 import java.util.*; 

     public class Kennzeichen { 

     char[] alphabet = new char[26]; 
     char[] nummern = new char[10]; 

     String teilstring; 
     String teilnummern1, teilnummern2, teilnummern3, teilnummern4, teilnummern; 
     String finale; 

     char a = 65; //ascii 
     char b = 48; // asci 
     int zahler = 0; 
     Scanner s = new Scanner(System.in); 
     int eineZahl = s.nextInt(); 

     public void arrayalphabet() { // generates an array alphabet A-Z 
      for (int i = 0; i < alphabet.length; i++, a++) { 
       alphabet[i] = a; 
      } 
     } 

     public void arraynummern() { //generates numbers between 0 and 9 
      for (int i = 0; i < nummern.length; i++, b++) { 
       nummern[i] = b; 
      } 
     } 

     public String generierekennzeichen() { // first char must be B   therefore  alphabet[1] 
      int zahl = (int) ((Math.random()) * 25 + 1); 
      int zahl1 = (int) ((Math.random()) * 25 + 1); 
      return(teilstring = alphabet[1] + "" + alphabet[zahl] + "" + alphabet[zahl1]); 

    } 

    public String generierenummern() { // 4 numbers are generated and returned as total 

     int nummer1 = (int) (Math.random() * 9 + 1); 
     int nummer2 = (int) (Math.random() * 9 + 1); 
     int nummer3 = (int) (Math.random() * 9 + 1); 
     int nummer4 = (int) (Math.random() * 9 + 1); 
     teilnummern1 = nummern[nummer1] + ""; 
     teilnummern2 = nummern[nummer2] + ""; 
     teilnummern3 = nummern[nummer3] + ""; 
     teilnummern4 = nummern[nummer4] + ""; 
     return(teilnummern = teilnummern1 + teilnummern2 + teilnummern3 + teilnummern4 + ""); 

    } 

    public void print() { //prints the total license such as B-AD 7645 
     System.out.println(finale = teilstring + "-" + teilnummern); 
    } 

    public void erzeugestack() { //using stack, not that important(just practise 
     Stack<String> s = new Stack<String>(); 
     s.push(finale); 

    } 

    public void Abfrage() { // eineZahl is the input of the user, e.g 2 
     for(int i=0; i<eineZahl;i++){ 
      generierekennzeichen(); 
      generierenummern(); 
      print(); 
     } 
    } 

    public static void main(String[] args) { 
     Kennzeichen kennzeichen = new Kennzeichen(); 
     kennzeichen.arrayalphabet(); 
     // kennzeichen.generierekennzeichen(); 
     kennzeichen.arraynummern(); 
     // kennzeichen.generierenummern(); 
     kennzeichen.Abfrage(); 
     kennzeichen.erzeugestack(); 
    } 
関連する問題