将值分配给数组

时间:2015-02-16 14:25:29

标签: java arrays

我有一个关于为数组签名的问题。我在下面复制了我的代码(我是新手) 在编译和执行我的代码后,我只能看到数组中的最后一个值。为什么?这是一个非常基本的密码

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));
    }
}

1 个答案:

答案 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数组只应在循环之前初始化一次。在每次迭代中在循环内初始化它会使先前分配的值(对于先前的数组)不可访问。