2016-12-03 18 views
0

メソッドを持つ1つのファイルと、最初のメソッドを呼び出すその他のファイル。割り当ては、ユーザーが実際のピンに対応するいくつかの数字を入力するように要求しています。別のクラスのメソッドを呼び出すJavaプログラムを作る方法は?

ピンは99508で、0から9の各数字は1,2、または3の任意の数字で表されます。そのため、ユーザーは実際のピンの代わりに「22312」のようなものを入力します。

私は最初の部分を完了したと思いますが、最初のメソッドを呼び出すために2番目のファイルを作成する方法がわかりません。ここで

は私の最初のファイルである:

import java.util.Scanner; 

    public class Authenticate 
    { 

    public static void main(String[] args) 
    { 

    int[] actual_password = {9, 9, 5, 0, 8}; 

    int[] random_nums = new int[10]; 

    int[] entered_digits = new int[actual_password.length]; 

    for (int i=0; i < 10; i++) 
    { 
    random_nums[i] = (int) (Math.random() * 3) + 1; 
    } 

    System.out.println("Welcome! To log in, enter the random digits from 1-3 that"); 
    System.out.println("correspond to your PIN number."); 
    System.out.println(); 
    System.out.println("PIN digit: 0 1 2 3 4 5 6 7 8 9"); 
    System.out.print("Random #: "); 
    for (int i=0; i<10; i++) 
    { 
    System.out.print(random_nums[i] + " "); 
    } 
    System.out.println(); 
    System.out.println(); 

    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter code."); 
    String s = keyboard.next(); 

    int Index = 0; 
    for (int i=0; i<actual_password.length; i++) 
    { 
    String z = keyboard.next(); 
    entered_digits[Index++] = s.charAt(0) - '0'; 
    } 
    if (isValid (actual_password, entered_digits, random_nums)) 
    { 
    System.out.println("Correct! You may now proceed."); 
    } 
    else 
    { 
    System.out.println("Error, invalid password entered."); 
    } 
    } 

そして、ここでは、私はメソッドを使用するには、デモのために持っているものです。

import java.util.Scanner; 

    public class AuthenticateDemo 
    { 
    public static void main(String[] args) 
    { 
      Authenticate myAuthenticate = new Authenticate(); 

    myAuthenticate.genRandomNum(); 

    System.out.println("Welcome! To log in, enter the random digits from 1-3 that"); 
    System.out.println("correspond to your PIN number."); 
    System.out.println(); 
    System.out.println("PIN digit: 0 1 2 3 4 5 6 7 8 9"); 
    System.out.print("Random #: "); 


      myAuthenticate.printRandomNum(); 
    } 
    } 

は、今私はmyAuthenticate行でエラーを取得し、私はないですコードが間違っている場所を確認してください。任意の助けが大きくなる

+3

クラス 'Authenticate'には、メソッドがありません。すべてがメインにあります。あなたはそれらをメソッドに入れる必要があり、そのファイルを実行していないのでmainは廃止されています。 –

答えて

0

別のクラスのメソッドを呼び出す1つの方法は、問題のメソッドがメソッドヘッダーにstaticキーワードを持つことを確認することです。例は、私は私のコンピュータサイエンス1クラスでやった宿題から取られている(私は大学では新入生ですので、誰かが良い答えを持っている場合、ハハ答えてください):

与えられた方法で使用して再帰:

public class Homework8Methods{ 
public static ArrayList<int[]> permuteArray(int[] array) { 
    ArrayList<int[]> result = new ArrayList<int[]>(); 
    permute(result, array, array.length); 
    return result; 
} 

public static void permute(ArrayList<int[]> permutations, int[] a, int n) { 
    if (n == 1) { 
     permutations.add(a.clone()); 
     return; 
    } 

    for (int i = 0; i < n; i++) { 
     swap(a, i, n - 1); 
     permute(permutations, a.clone(), n - 1); 
     swap(a, i, n - 1); 
    } 
} 

public static void swap(int[] a, int i, int j) { 
    int temp = a[i]; 
    a[i] = a[j]; 
    a[j] = temp; 
} 

}

そして、この特定の問題のためのテストケースを持っていた別のクラスで:

System.out.println("\nPart 3:"); 
    nums = new int[]{4, 7, 1, 2}; 
    ArrayList<int[]> perms = Homework8Methods.permuteArray(nums); //Here is where the method is called from the separate class. It goes (ClassName).(MethodName with/without parameters, depending on the method in question). 
    System.out.println("permuteArray({4, 7, 1, 2}):"); 
    // uncomment the following code once you have implemented permuteArray()   
    for (int[] array: perms) { 
     for (int i = 0; i < array.length; i++) 
      System.out.print(array[i] + " "); 
     System.out.println(); 
    } 

うまくいけば、このことができます!

+0

ありがとう、これは私への良い言及です。私は自分のコードが必要とするものを理解することができます。 –

+0

お役に立てれば幸いです! – BTM

0

他のクラスの存在しないメソッドを呼び出すことはできません。デモクラスのmyAuthenticate.genRandomNum();メソッドを使用するためには、このようなAuthenticateクラスでメソッドを作成する必要があります。

public int genRandomNum(){ 
    //code to generate that random number 
    return thatNumber; 
} 
あなたはそれがどのように見える

int randomNum = myAuthenticate.getRandomNum(); 

のようなものを言って、これをアクセスすることができます

コードを別のファイルに入れて整理しようとしているだけです。あなたは本当にオブジェクト指向プログラミングでそれをうまくやっていくことはできません。 1. AuthenticateDemoクラスで公開されていて、myAuthenticate.variableNameまたは2で返すことができる場合を除き、AuthenticateDemoクラスでアクセスすることはできません。これらはプライベートであり、値を返すための「アクセサ」メソッドを記述します。あなたは今それを持っているとして、あなたはexecute(){...}のようなものへの認証のmain(String[] args){...}方法を書き換えるとミスのこの種かかわらずオブジェクト指向のポイントをmyAuthenticate.execute();使用してそれを呼び出すことができ、コードを使用したい場合はmyAuthenticate.getVariableName()

を書き込むことで頂いております。

+0

ありがとうございます、私はどこが間違っていたか見始めています。私は今、私のコードを編集して、それが動作するかどうかを確認しようとします。 –

関連する問題