我有一个关于为数组签名的问题。我在下面复制了我的代码(我是新手) 在编译和执行我的代码后,我只能看到数组中的最后一个值。为什么?这是一个非常基本的密码
import java.util.Arrays;
import java.util.Scanner;
public class CipherManager {
String message;
int key;
int basic = -72;
int array[];
public void cipher() {
Scanner sc = new Scanner(System.in);
System.out.println("Type a text you want to cipher");
message = sc.nextLine();
System.out.println("Write down a number key");
while (!sc.hasNextInt()) {
if (sc.hasNextInt()) {
key = sc.nextInt();
sc.nextLine();
} else {
System.out.println("Error, enter a number ");
sc.next();
}
}
for (int i = 0; i < message.length(); i++) {
System.out.print(message.charAt(i));
array = new int[message.length()];
int litera = message.charAt(i) + key + basic;
array[i] = letter;
}
System.out.println(Arrays.toString(array));
}
}
答案 0 :(得分:2)
我假设您当前的代码是(您的array
数组从未初始化,并且由于您没有得到NullPointerException
,您可能没有使用它):
for (int i = 0; i < wiadomosc.length(); i++) {
System.out.print(message.charAt(i));
tablica=new int[message.length()];
int litera = message.charAt(i)+key + basic;
tablica[i]=letter;
}
应该是:
tablica=new int[message.length()];
for (int i = 0; i < wiadomosc.length(); i++) {
System.out.print(message.charAt(i));
int litera = message.charAt(i)+key + basic;
tablica[i]=letter;
}
tablica
数组只应在循环之前初始化一次。在每次迭代中在循环内初始化它会使先前分配的值(对于先前的数组)不可访问。