[英]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.