加密/解密文件。用于加密/解密的ASCII +1
我试图读取一个文本文件,并将每个字母“加密”/从ASCII表转换为+1(我也想“解密”,所以-1) 。所以“a”将变成“b”,“b”变成“c”等等。我只需要转换字母(忽略其他所有内容,按照原样打印)。我有麻烦与这部分代码:加密/解密文件。用于加密/解密的ASCII +1
我已经想通了如何+1炭,但我不知道如何添加回数组或打印出来正确(因为“morewords.add(ch)”只会添加字符,而不是转换所有的字符添加一个字符串)。 “words.get(i).length()”取整数组“words”的整个长度,当我只想将字符串@位置“i”的长度放在数组中时,它会抛出错误,因为长度数组的长度比字符串长。我一直坚持这几个小时,我无法弄清楚。我在想,也许我不应该以字符串的形式阅读它们,应该以字符的形式阅读它们,这可能会更简单?
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<String> words = new ArrayList<String>();
ArrayList<Character> morewords = new ArrayList<Character>();
String fileName = ""; //Replace Test with this
File f;
Scanner fileIn;
System.out.println("Please enter a file name for encryption: ");
//fileName = in.nextLine();
fileName = "Test.txt";
try
{
//Build the file and attach a scanner to it
f = new File (fileName);
fileIn = new Scanner (f);
System.out.println(f.exists()); //For errors
int counting = 0;
//Reads in indvidual strings.
for(counting =0; fileIn.hasNext(); counting++)
{
words.add(fileIn.next());
System.out.println(words);
}
PrintWriter fileOut = new PrintWriter ("Backwards.txt");
for(int i = 0; i <= words.size(); i++)
{
for(int j = 0; j <= words.get(i).length(); j++)
{
char ch = ' ';
ch = words.get(i).charAt(j);
ch += 1;
morewords.add(ch);
}
fileOut.print(morewords.get(i) + " ");
}
fileOut.close();
}
catch(FileNotFoundException e)
{
System.out.println("Couldn't find file");
}
}
首先在一个for循环是对你最后的长度为1的
什么我已经改变做
for (int i = 0; i <= words.size()-1; i++){}
如果找你从0开始的
PrintWriter fileOut = new PrintWriter("C:/Backwards.txt");
for (int i = 0; i <= words.size()-1; i++)
{
for (int j = 0; j <= words.get(i).length()-1; j++)
{
char ch = ' ';
ch = words.get(i).charAt(j);
ch ++; // +=1
morewords.add(ch);
fileOut.print(ch);
}
fileOut.print(" ");
}
fileOut.close();
它输出正确,如果我理解正确=)
这是我的代码
public static void main(String[] args) throws Exception
{
BufferedReader inChannel = new BufferedReader(new FileReader("C:/script.txt"));
BufferedWriter outChannel = new BufferedWriter(new FileWriter("C:/output.txt"));
String toParse = "";
while ((toParse = inChannel.readLine()) != null)
{
String toWrite = "";
for(int i=0; i!=toParse.length();i++)
{
char c = toParse.charAt(i);
if(true) //check if must be encoded or not
{
c++;
toWrite += c;
}
}
outChannel.write(toWrite);
outChannel.newLine();
}
inChannel.close();
outChannel.close();
}
希望帮助
这确实有帮助,谢谢!将-1添加到words.size()解决了问题。此外,感谢您向我展示了一种更简单,更简单的方法来做到这一点! – Riotson 2014-12-03 03:41:34
很高兴听到它! =) – 2014-12-03 10:46:58
基于安德烈的回答,这似乎是一个错字。是吗? – 2014-11-05 13:22:33