到目前为止,我已经为简介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?
}
}
}
答案 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;
}
}
}
}