所以我正在做的是创建一个读取 2 个文本文件的程序,1 个是纯文本文件,另一个是文本文件的加密版本。
我将字符串(对于每一行)设置为大写,并获取字符串索引 0-65 的字符,这就是我在数组中的位置。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class ReadIn {
public void fileReader(){
try{
Scanner inFile1 = new Scanner(new File("plaintext.txt"));
//Scanner inFile2 = new Scanner(new File("ciphertext.txt"));
int lol[] = new int[27];
while(inFile1.hasNextLine()){
String base = inFile1.nextLine();
base.toUpperCase();
String placeHolder = base;
for(int i=0;i<base.length();i++){
if(placeHolder.charAt(0)==' '){}
else if(base.charAt(0)=='.'){}else if(base.charAt(0)==','){}
else if(base.charAt(0)=='"'){}else if(base.charAt(0)==':'){}
else if(base.charAt(0)=='-'){}else if(base.charAt(0)=='?'){}
else if(base.charAt(0)=='!'){}else{lol[(base.charAt(0)-65)]++;}
placeHolder = placeHolder.substring(1);
}
}
for(int j=0;j<lol.length;j++){
System.out.println(lol[j]);
//To show what is inside the Index.
}
}catch(FileNotFoundException e){
System.out.println("File is not in the correct directory!");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Array Index is to small!!");
}
}
}
这是我将数组大小设置为 60 时得到的输出
142 119 0 0 0 62 60 0 682 0 0 179 24 232 0 62 0 0 0 184 0 0 440 0 63 0 0 0 0 0 0 0 471 182 215 94 60 409 0 242 174 079 30 52 89 7 472 673 101 62 324 0 124 0 0 0
问题是,当我运行程序时,为什么我的数组很小。如果所有字母都大写,则从 'A' 之类的字符中减去 65 应为 0,因此将 1 添加到数组中的索引 [0]。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更新
好的,所以我通过“base = base = base.toUpperCase();”将字符串设置为自己大写 这完美无缺,除了我的数组必须设置为 91 以补偿 ascii 中的 Z (90) 当我尝试转到数组的索引点添加我使用 [(base.charAt(0)-65) ]++ 但它抛出 ArrayIndexOutOfBoundsException -21