这似乎是一个非常常见的问题,与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();
}
}
答案 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];
。