如何在main中调用一个方法时调用方法中的方法

时间:2016-10-31 08:20:59

标签: java

在我的作业中,我必须通过在ASCII表上移动其字符来加密一个单词,然后以反向打印我所做的。

我已经创建了两个方法,一个名为encrypt,另一个名为reverse,但是,我不能得到正确的输出,但我确信我的方法是100%工作(程序也应该使用句子如在空格中不应加密)

我应该拥有的样本:

  

=> java加密

     

请输入一个句子或单词:Hello World

     

pmmfI emspX

以及我应该遵循的条件来回忆这些方法:

  1. 如果用户提供多个字词,则应将其视为一个字符串
  2. main()调用encrypt(),它不调用reverse()
  3. encrypt()在返回字符串
  4. 之前调用reverse()
  5. 字符串的打印发生在main()
  6. 我的代码:

    import java.util.*;
    public class Encrypt {
    
    
        public static void main(String[] args) {
            Scanner console = new Scanner(System.in);
            System.out.println("Please enter a sentence or a word: ");
            encrypt(reverse(console.next()));
    
        }
        public static String reverse (String text){
    
            for( int i = text.length()-1 ; i >= 0; i--){
    
                System.out.print(text.charAt(i));
            }
    
            return text;
        }
        public static String encrypt (String text){
    
            for( int i =0 ; i < text.length(); i++){
    
                char X = text.charAt(i); 
                int ascii = (int)X;
                if(ascii == 32){
                    System.out.print(" ");
                }
                else {
                    System.out.print((char) (ascii+1) );
                }
    
            }
            return text;
        }
    }
    

    我不知道主要做什么,因为我不知道如何获得输出而只调用加密的方法之一

    希望我不是很困惑

2 个答案:

答案 0 :(得分:2)

您目前正在做的事情从根本上是错误的,因为它始终返回原始输入。它更像是一个 void 方法。您必须将加密的String存储在方法中并按如下方式返回。

 public static String encrypt(String text) {
    StringBuilder encrypted=new StringBuilder();
    for (int i = 0; i < text.length(); i++) {

        char X = text.charAt(i);
        int ascii = (int) X;
        if (ascii == 32) {
            encrypted.append(" ");
        } else {
            encrypted.append((char) (ascii + 1));
        }

    }
    return encrypted.toString();
}

主要方法如下

public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    System.out.println("Please enter a sentence or a word: ");
    String encrypted=encrypt(console.nextLine());
    System.out.println(reverse(encrypted));

}

答案 1 :(得分:1)

不应该调用System.out.println(),而应将字符添加到返回的字符串:

public static String reverse (String text){
        String ret = "";
        for( int i = text.length()-1 ; i >= 0; i--){

           ret=ret+text.charAt(i);
        }

        return ret;
    }

使用其他方法执行相同操作,然后在主要内容中调用

System.out.println(encrypt(reverse(console.nextLine())));