[英]Java text analysis program
以下必备条件是我目前遇到问题的程序:
程序必须能够打开用户指定的任何文本文件,并分析文本中的口头蜱的频率。 由于有许多不同类型的口头蜱(例如“喜欢”,“呃”,“嗯”,“你知道”等),程序必须询问用户要查找的刻度。 用户可以输入多个刻度,以逗号分隔。
该计划应输出:
这是我的计划:
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
+ type?
假设我想更改数组的值(就像我在程序中使用并使用public static void)我是否需要返回实际更改数组值的内容或者是否可以使用public static void?
如果有人对我的方法有任何一般指示,我会非常感激。
您的问题在于您的initiate
方法:
return values;
processing(values);
一旦调用return
,您的方法就会停止。 如果您正在使用Eclipse(我强烈推荐),那么您应该收到错误消息“无法访问的代码”,因为程序无法执行您的processing
方法。
我也在你的output
方法中看到了这个缺陷。
首先,
static
真正意味着什么? 我记得我的老师说它代表了一个全局变量,我可以在程序的任何地方使用它。 正如您所看到的,我将每个变量都更改为static
以使我的任务更容易。
这取决于具体情况。 这里有一个很好的整体描述 。 应用于方法,字段和类时,含义不同。 说它使变量“全局”有点简化。
另外,如果我要改变一些东西,我是否真的需要使用返回的
public static
+ type?
我对你的意思有点困惑。 声明为public static *return_type*
具有三个独立的独立特性:
public
:任何其他类都可以访问它。 static
:它不需要类的实例来运行(参见上面的链接)。 *return_type*
:这当然是返回类型。 这些属性与“改变某些东西”并不真正相关。 除非我误解你的问题,答案是:不,方法说明符和返回类型对其改变的东西,不同的是能力没有影响, static
方法不能修改非static
字段或调用非static
的方法, this
(有在static
方法中没有this
)。
假设我想更改数组的值(就像我在程序中使用并使用public static void)我是否需要返回实际更改数组值的内容或者是否可以使用public static void?
你在功能上做的是完全独立的访问说明符和static
它-ness(与上述不同的是this
不存在static
方法)。 如果你的函数有任何副作用,如更改数组中的值(或任何值),那么无论是public
, static
还是返回类型,它都会执行此操作。
查看官方语言教程的“ 更多课程”部分。 它简明扼要,写得很好,应该有助于您理解您所询问的一般概念。 如果您愿意,还可以查看其他一些教程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.