一个文件有方法,另一个文件调用第一个方法。分配是要求用户输入与其实际引脚相对应的一些数字。
引脚为99508,然后从0到9的每个数字将由1,2或3的随机数字表示。因此用户将输入类似“22312”而不是其实际引脚的数字。
现在我认为我完成了第一部分,但我不确定如何制作第二个文件以调用第一部分方法。
这是我的第一个文件:
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
行遇到错误,我不确定代码出错的地方。任何帮助都会非常
答案 0 :(得分:0)
调用另一个类的方法的一种方法是确保所讨论的方法在其方法头中具有静态关键字。这个例子来自我在计算机科学1课上做的家庭作业(我是大学新生,所以如果有人有更好的答案,请回答哈哈):
使用递归的给定方法:
FileOutputStream
}
然后在另一个具有此特定问题的测试用例的类中:
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;
}
希望这有帮助!
答案 1 :(得分:0)
您无法调用另一个类的不存在的方法。要在演示类中使用myAuthenticate.genRandomNum();
方法,您需要在Authenticate
类中创建一个方法,如下所示:
public int genRandomNum(){
//code to generate that random number
return thatNumber;
}
您可以通过说出
之类的内容来访问此内容int randomNum = myAuthenticate.getRandomNum();
看起来您只是想通过将代码放在不同的文件中来组织代码。在面向对象编程中你不能真正做到这一点。 AuthenticateDemo类中不能访问Authenticate类中的变量,除非1.它们是公共的并且可以由myAuthenticate.variableName
或2返回。它们是私有的,并且您编写了一个“访问器”方法来返回可以通过编写myAuthenticate.getVariableName()
如果您想立即使用代码,可以将main(String[] args){...}
身份验证方法重写为execute(){...}
,并使用myAuthenticate.execute();
调用此类错过面向对象的重点。