比较for循环(java)中两个数组的元素?

时间:2014-10-14 21:59:22

标签: java arrays encryption char compare

这似乎是一个非常常见的问题,与java中的数组和比较相关,但是对于我的情况,我无法在所有这些中找到正确的答案。

在这个应用程序中,我正在尝试制作一个“加密”用户提供的文本的程序。例如:user给出字符'a b c',程序将其返回为'@#$'。但是你可能会注意到我在代码中遇到了一些问题 “pozita [i] = j;”。 为什么这段代码不起作用?它不会给我一个错误?或者无论如何将其作为“新pozita [i]”或类似的东西?

好吧,如果有人能帮助我,我会很高兴。我被困了一段时间。提前致谢! :)

import java.util.*;
import javax.swing.*;
import java.awt.*;

public class TestPerProgram extends JFrame
{
    char[] alfabeti = {'a','b','c','r','n','t'};
    char[] kodimi = {'@','#','%','*','^','$'};
    int[] pozita;
    //Scanner merr = new Scanner(System.in);

    String fn = JOptionPane.showInputDialog("Jepe tekstin:");
    char[] input = fn.toCharArray();

    void numro()
    {
        for (int i=0; i<=input.length; i++)
        {
            for(int j=0; j<=input.length; j++)
            {
                if(alfabeti[j] == input[i])
                {
                    pozita[i] = j;
                    System.out.println(pozita[i]);
                }
            }
        }

        /*
        for (int k=0; k<=input.length; k++)
        {
            System.out.println(pozita[k]);
        }
        */

    }

    public static void main(String[] args)
    {
        TestPerProgram pjesa = new TestPerProgram();

        pjesa.numro();

    }

}

3 个答案:

答案 0 :(得分:1)

我不是100%明白您的算法应该如何工作,但似乎您可能想要替换该行

pozita[i] = j;

pozita[i] = kodimi[j];

现在,您只是将匹配的索引写入pozita,而不是替换字符。

如果我的假设是正确的,你也会改变

int[] pozita;

char[] pozita;

并将其初始化为长度为input.Length。

的数组

答案 1 :(得分:1)

您从未实例化数组pozita。实例化pozita后,您可以开始覆盖pozita中的值。您将j分配给posita[i]posita为空。

做类似的事情:

int posita[] = new int[20]

如果您不想设置大小,那么只需使用arraylist。

答案 2 :(得分:0)

您尚未请求为变量pozita分配内存或以其他方式实例化内存。您当前使用它的方式是,在从用户检索您的输入后,您会在某个时刻写pozita[] = new int[input.length];