需要有关简单Java分配提示的帮助

时间:2014-12-07 18:46:30

标签: java

到目前为止,我已经为简介Java完成了多项任务,但我需要一些帮助来了解这prompt要求我做什么。

  

最低要求:

     
      
  • 创建一个包含以下方法的单独类(4分)注意:此类应该是独立的,并且与   持有主要方法的公共类。你可以上课   那是公共类,或者你可以将它放在一个单独的.java中   文件:   
        
    • 一种方法,它将参数作为电话号码的整数数组安全代码的参数(您选择)   安全代码的数据类型)。使用一次(或多次)遣返   用加密的方法替换数组中的每个数字的结构   版本使用 C =(P + key)mod 10 ,其中包含相应的数字   如上所述的安全代码。注意:你应该做   替换*在原始数组中。 (5分)
    •   
    • 创建一个接受加密电话号码作为整数数组和解码密钥的方法。使用一个(或多个)声誉   结构将其返回到其纯文本(解密)版本使用    P =(C - key)mod 10和条件   
          
      • if (P < 0) P = P + 10
      •   
    •   
    • 注意:您应该在原始数组中进行替换*。 (5分)
    •   
  •   
  • 使用至少一个样本电话号码调用main方法中的方法。在呼叫前后显示主电话号码   每种方法(5分)。
  •   
     

重要说明:如果您愿意,可以通过控制台或GUI获取用户的电话号码,但不是   需要。您可以在创建时将电话号码放入代码中   相反,如果您希望以这种方式执行此操作。不管   你如何获得电话号码,它必须放在一个数组和阵列中   必须传递给另一个接受数组作为参数的方法。   您应该获取相同的电话号码和价格   方法

另外,我需要一些关于如何解决这个问题的技巧。我开始时:

public class Encrypt {

    public static void main(String[] args) {
        int[] a = {6, 5, 0, 7, 8, 7, 9, 9, 0, 9};
        cipher cipher = new cipher();
        cipher.yes(a, 1, 2, 3);
    }
}

class cipher {

    public void yes(int[] phone, int x, int y, int z) {
        for (int count = 0; count < 3; count++) {
            //Don't know what to do here, I want to try the security codes I set to the array slots but I'm not sure how. I started with phone = (phone + x) % 10 but I keep getting an error.
            // I'm having a hard time understanding this assignment and working with the arrays, if possible could I get some kind of walk through or tips?
        }
    }
}

3 个答案:

答案 0 :(得分:2)

您尝试使用数组,就好像它是一个值一样。我建议你在解决这个问题之前阅读数组,Oracle tutorial是一个很好的起点。

在正确理解数组之后,您将了解到需要指定和索引以访问数组值,例如phone[0](这将获得电话阵列上的第一个值)。 该赋值要求您基本遍历数组并将公式应用于每个元素。

答案 1 :(得分:1)

首先:不要使用私人课程。尽管可以这样做,但您应该始终为每个类创建一个单独的文件(其他一切都是无意义的,因为您无法在其他任何地方重用私有类)

其次:类名应以大写字母开头(变量以小写字母开头)。像这样:

public class Cipher{
   ....
}

然后你可以像这样创建该类的实例:

Cipher cipher = new Cipher();  // here Cipher is the class and cipher is the name of your variable

现在,根据我的理解,他们要求您通过此计算将数字电话号码转换为数字:C= (P+key) %10

所以在你的方法中你可以这样做:

public void yes(int[] phone, int x, int y, int z) {
    int code = x+y+z; // I don't know how you constructed your code but lets say it is a code of 3 digits x,y,z that give the number xyz (e.g. 1,2,3 -> 123)
    for (int count = 0; count < phone.length; count++) {  // you need to iterate through the complete phone number. Which means that your loop starts at 0 and stops when reaching the end (length) of your phone array
        phone[count] = (your calculation here) // you replace each digit from the phone array by the result of that calculation
    }
}

例如,如果您的手机阵列如下所示:

 int[] phone = {4,5,6,4,6,8};

您可以通过数字索引访问数组中的每个元素:

phone[0]  // 4
phone[1]  // 5
phone[4]  // there you have the 5th element of the array which is 6

!重要:索引在0开始始终,在array.length -1结束(在这种情况下为6-1 = 5

如此。 int digit= phone[0];将返回数组的第一个元素并将其放入新的varable digit中。为了在数组中写入内容,您可以执行以下操作:phone[0] = 3;它表示您使用数字3替换数组的第一个元素。

这就是你需要做的(我在示例中向您展示)。您需要将C= (P+key) %10计算的结果写入数组。

再一次你的任务:

  • 循环遍历数组for(int i=0;i<array.length;i++){...(此处i是索引,在您的代码中称为count
  • 您从当前索引int digit = array[i];
  • 的数组中获取数字
  • 您进行了计算:int result = (digit + code)%10;
  • 您将结果放回数组:array[i] = result;

不要对这里的变量名称感到困惑,我是故意这样做的,因为它们只是名字:)

答案 2 :(得分:0)

您需要创建除main main方法之外的类,并创建问题中提到的方法。您需要将int数组传递给方法,并将另一个int作为键传递。我已经完成了这个问题。将这些类放入不同的文件或同一文件中 主要课程

public class Main {
      public static void main(String[] args) { 
        Cipher cipher=new Cipher();
        int[] in={2,3,4,5,6};
        cipher.encrypt(in,2);
        cipher.decrypt(in,2);
        int n = in.length;
        for (int x=0;x<n;x++){
          System.out.println(in[x]);
        }
      } 
    }

密码类

class Cipher{
  public void encrypt(int[] in, int key){
    int n = in.length;
    for (int x=0;x<n;x++){
      in[x]=(in[x]+key)%10;
    }
  }

  public void decrypt(int[] in, int key){
    int n = in.length;
    for (int x=0;x<n;x++){
      in[x]=(in[x]-key)%10;
      if(in[x]<0){
        in[x]=in[x]+10;
      }
    }
  }

}