Java将变量传递给类,返回不同的变量

时间:2018-12-14 14:42:51

标签: java string class methods

因此,我看了无数关于类,引用和方法的帖子,现在已经设置并获取了几天。我似乎无法理解所有工作原理。

免责声明是的,这是用于课堂作业,下面的不良示例是为了说明。感谢您的帮助。

我已经有一个工作了(尽管程序非常初级且效率低下)。但是,我拥有的所有内容都在我的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
}

5 个答案:

答案 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
   }

}