因此,我看了无数关于类,引用和方法的帖子,现在已经设置并获取了几天。我似乎无法理解所有工作原理。
免责声明是的,这是用于课堂作业,下面的不良示例是为了说明。感谢您的帮助。
我已经有一个工作了(尽管程序非常初级且效率低下)。但是,我拥有的所有内容都在我的Primary类的主要方法中,我需要将其一部分放在单独的类中,并使所有内容仍然有效。
使用main方法,用户输入明文密码(clearText),其中提供的代码段将密码哈希到(hashText)中。然后将其用于其他用途。
我希望完成的工作是将哈希密码从我的主类的主要方法中分离出来,分成一个单独的辅助类。
我不知道该怎么做。如何将clearText导入到辅助类中,然后将hashText输出回到主类中的main方法。
谢谢。
import java.util.*;
import java.io.*;
public class Primary {
public static void main(String[] args) throws Exception {
String clearText = ("");
System.out.print("Type Text");
clearText = scnr.next();
//Somehow export clearText to the secondary class
//Somehow import hashText into the main method for further use
System.out.println(hashText);
}
}
public class Secondary {
String hashText = ("");
//Somehow import clearText value inputted but the user
//here is where clearText gets hashed(I have that)
//Somehow export hashText for use in the main method
}
答案 0 :(得分:1)
欢迎进行编程。这里要考虑的一件事是,您似乎认为Secondary
类是一个不变的实体,与程序一起运行。不是。您正在创建一个对象,其中包含要在程序其他位置使用的数据和功能。
您的辅助对象可以被实例化,然后用于执行任务。您也可以从基类内部创建的另一个方法执行此操作,但这也必须是静态的。
在包含散列实例的辅助类中,我看不到很多要点,并且该问题已经得到解答。我建议您考虑将其创建为服务。
import java.util.*;
import java.io.*;
public class Primary {
public static void main(String[] args) throws Exception {
String clearText = ("");
// Collect user input
System.out.print("Type Text");
clearText = scnr.next();
// Create hash and display
String hashText = HashService.generateHash(clearText);
System.out.println(hashText);
}
}
public class HashService {
public static String generateHash(String fromText){
// implementation here
return null;
}
}
编辑:好像有人擦除了对象答案。如果您出于某种原因想要将哈希密码保留为对象,可以这样做
import java.util.*;
import java.io.*;
public class Primary {
public static void main(String[] args) throws Exception {
String clearText = ("");
// Collect user input
System.out.print("Type Text");
clearText = scnr.next();
// Create hash and display
HashedPassword hash = new HashedPassword(clearText);
String hashText = hash.getHashedPW();
System.out.println(hashText);
}
}
public class HashedPassword {
private String hashedPW = ""
public HashedPassword(String fromText){
// Assign hashedPW with some logic
hashedPW = fromText;
}
public getHashedPW(){
return hashedPW;
}
}
答案 1 :(得分:0)
在第二个类中简单创建一个方法,该方法接受您的明文并返回哈希值,然后从主方法中对第二个类的对象调用此方法
答案 2 :(得分:0)
public static void main(String[] args) throws Exception {
String clearText = ("");
System.out.print("Type Text");
clearText = scnr.next();
// Somehow export clearText to the secondary class
// Somehow import hashText into the main method for further use
System.out.println(Secondary.stringToHash(clearText));
}
publicclass Secondary {
public static long stringToHash(String input) {
// some transformation
}
// Somehow import clearText value inputted but the user
// here is where clearText gets hashed(I have that)
// Somehow export hashText for use in the main method
}
这应该可以,但是您实际上不需要另一个类,只需创建一个静态方法即可。
答案 3 :(得分:0)
您可以执行以下操作:
import java.util.*;
import java.io.*;
public class Primary {
public static void main(String[] args) throws Exception {
String clearText = ("");
System.out.print("Type Text");
clearText = scnr.next();
String hashText = Secondary.hashText(clearText);
System.out.println(hashText);
}
}
public class Secondary {
public static String hashText(String clearText) {
// TODO return the hash
return null;
}
}
或者如果您的二级类中有一些非静态的东西,那么您可以创建它的一个实例(通过Secondary secondary = new Secondary()
),然后调用secondary.hashText()
(也使hashText为非静态的): )
答案 4 :(得分:0)
因此,如果需要两个单独的类,请记住每个类必须位于单独的文件中。您需要像这样在第一类中导入第二类:
import YourPackageName.YourClassName;
然后在主类中可以这样:
public class Primary {
public static void main(String[] args) throws Exception {
String clearText = ("");
System.out.print("Type Text");
clearText = scnr.next();
Secondary secondClass = new Secondary();
String hashText = secondClass.hash(clearText);
System.out.println(hashText);
}
}
同时进行中学考试:
public class Secondary {
public String hash (String clearText){
//doHash
}
}