【发布时间】:2014-03-25 05:51:48
【问题描述】:
以下是我目前遇到问题的程序的必备条件:
程序必须能够打开用户指定的任何文本文件,并分析文本中的口头滴答频率。由于有许多不同种类的口头记号(例如“like”、“uh”、“um”、“you know”等),程序必须询问用户要查找的记号。用户可以输入多个刻度,以逗号分隔。
程序应该输出:
- 在文本中找到的抽动总数
- 抽动的密度(文本中抽动的所有单词的比例)
- 每种语言抽动的频率
- 每个抽动在所有抽动总数中所占的百分比
这是我的程序:
public class TextfileHW2 {
// initiate(
public static int[] initiate(int[] values){
for (int z=0; z<keys.length; z++){
values[z] = 0;
}
return values;
processing(values);
}
// processing(values)
public static int[] processing(int[] valuez){
while (input.hasNext()){
String next = input.next();
totalwords++;
for (int x = 0; x<keys.length; x++){
if (next.toLowerCase().equals(keys[x])){
valuez[x]+=1;
}
}
return valuez;
output();
}
for (Integer u : valuez){
totalticks += u;
}
}
public static void output(){
System.out.println("Total number of tics :"+totalticks);
System.out.printf("Density of tics (in percent): %.2f \n", ((totalticks/totalwords)*100));
System.out.println(".........Tick Breakdown.......");
for (int z = 0; z<keys.length; z++){
System.out.println(keys[z] + " / "+ values[z]+" occurences /" + (values[z]*100/totalticks) + "% of all tics");
}
sc.close();
input.close();
}
public static void main(String[] args) throws FileNotFoundException {
static double totalwords = 0; // double so density (totalwords/totalticks) returned can be double
static int totalticks = 0;
System.out.println("What file would you like to open?");
static Scanner sc = new Scanner(System.in);
static String files = sc.nextLine();
static Scanner input = new Scanner(new File(files));
System.out.println("What words would you like to search for? (please separate with a comma)");
static String ticks = sc.nextLine(), tics = ticks.toLowerCase();
static String[] keys = tics.split(",");
static int[] values = new int[keys.length];
initiate(values);
}
我的程序在逻辑上应该是正确的,因为我在上周编写并成功运行了一段时间,但与这个程序的不同(不起作用)是我必须对分析的每个组件使用单独的方法,考虑到该程序之前正在运行,这应该不是太困难的任务所以我自然地尝试拆分我的程序,以便我可以调用我的第一个方法(我称之为启动)然后我的第二个和第三个方法称为处理和输出。
首先,static 的真正含义是什么?我记得我的老师说过它代表一个全局变量,我可以在程序的任何地方使用它。如您所见,我将每个变量都更改为static,以使我的任务更轻松。
另外,如果我要更改某些内容,我是否严格需要使用 public static + 返回类型?
假设我想改变一个数组的值(就像我在我的程序中做的那样并使用 public static void)我需要返回一些东西来实际改变数组的值还是可以使用 public static void ?
如果有人对我的方法有什么一般性的指导,我将不胜感激。
【问题讨论】:
-
你知道这句话中是否有“勾号”?您将需要某种方法来检测“勾号”词的哪些用法类似于那些常规用法,哪些以错误的方式使用。
-
@spacesick 如果有帮助请接受答案