我有一个赋值,我有两个类,一个驱动程序类,它使用scanner实用程序从键盘读取字符串,然后记录字母频率。 (每个字母出现在输入字符串中的次数)。我的程序应该继续输入文本行,直到你连续输入两个Return。然后代码应该打印字母频率,然后是一个报告,给出最频繁的字母及其计数(如果是最常见字母的关系,任何最常见的字母都会这样做)。此外,我的代码忽略了字母大小写 - 因此应该计算大写字母和小写字母。
我的驱动程序类是
import java.util.*;
public class LetterDriver{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String tScan = " ";
while(tScan.length() > 0){
tScan = s.nextLine();
}
}
}
我的实际个人资料类是
public class LetterProfile {
int score[] = new int [26];
public void countChars (String s) {
s.toLowerCase();
char a = 'a';
for (int i = 0; i < s.length(); i++) {
int next = (int)s.charAt(i) - (int) a;
if ( next<26 && next >= 0)
score[next]++;
}
}
public void scoreLine (String lines) { // prints letter + # of appearance
int index = lines.length();
for (int j = 0; j<index; j++) {
score[j]++;
System.out.println(j + score[j]);
}
}
public int largestLength() { // finds most frequent letter
int largest = 0;
int largestindex = 0;
for(int a = 0; a<26; a++)
if(score[a]>largest){
largest = score[a];
largestindex = a;
}
return largestindex;
}
public void printResults() {
largestLength();
System.out.println(largestLength());
}
}
我的代码再次编译,当我运行它允许我输入我的文本输入,但当我返回两次所有我得到的是空白输出。我认为这可能与我的个人资料类无法从我的驱动程序类中正确读取,但无法弄清楚什么是错误的。
答案 0 :(得分:2)
您只是在主方法中从扫描仪读取数据,而您没有在Main方法中实例化您的类LetterProfile,因此它什么都不做。
答案 1 :(得分:1)
你没有在任何地方使用LetterProfile
课程!您只是阅读输入而不是传入LetterProfile
。在驱动程序中实例化LetterProfile
类并调用相关方法。
您的驱动程序类可能如下所示:
public class LetterDriver{
public static void main(String[] args){
LetterProfile letterProfile = new LetterProfile();
Scanner s = new Scanner(System.in);
String tScan = " ";
while(tScan.length() > 0){
tScan = s.nextLine();
letterProfile.countChars(tScan);
}
// Print the result
letterProfile.printResults()
}
}
答案 2 :(得分:1)
您只是从main方法中的输入中获取数据,您必须在静态main方法中实例化名称为LetterProfile的第二个类,因此它不执行任何操作。 java从阅读静态变量然后是静态方法开始所有事情,然后是其他..
答案 3 :(得分:1)
你在主要课程中调用过LetterProfile的方法在哪里?
参考以下代码: -
import java.util.*;
public class LetterDriver{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
LetterProfile lp=new LetterProfile();
String tScan = " ";
while(tScan.length() > 0){
tScan = s.nextLine();
}
lp._any_of_letter_profile_class_method();
}
}
或者
public class LetterDriver{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
LetterProfile lp=new LetterProfile();
String tScan = " ";
while(tScan.length() > 0){
tScan = s.nextLine();
lp._any_of_letter_profile_class_method();
}
}
}