当前位置: 代码迷 >> Java相关 >> [求助]无法从静态上下文中引用非静态方法
  详细解决方案

[求助]无法从静态上下文中引用非静态方法

热度:335   发布时间:2007-05-19 09:54:55.0
[求助]无法从静态上下文中引用非静态方法

小错能自己改 就是
LetterFrequencyDetector.java:53: 无法从静态上下文中引用非静态 方法 buildAlphabet
()
buildAlphabet( );
^
LetterFrequencyDetector.java:54: 无法从静态上下文中引用非静态 方法 removeNonLett
ers(java.lang.String)
ArrayList a=removeNonLetters(args[0]);
^
LetterFrequencyDetector.java:55: 无法从静态上下文中引用非静态 方法 calculateFreq
uencies(java.util.ArrayList)
calculateFrequencies(a);
^
LetterFrequencyDetector.java:56: 无法从静态上下文中引用非静态 方法 displayFreque
ncies()
displayFrequencies();

实在不知道怎么改了..



代码:
import java.util.*;
public class LetterFrequencyDetector{
ArrayList<Character> Alphabet = new ArrayList<Character>( );
ArrayList<Character> reAlphabet=new ArrayList<Character>( );
ArrayList<Integer> Frequency=new ArrayList<Integer>();
int[] count=new int[26];
public ArrayList buildAlphabet( ){

for(int i=97;i<=122;i++){
Alphabet.add((char)i);
}
return Alphabet;
}

public ArrayList removeNonLetters(String s){



s=s.toLowerCase();
for(int i=0;i<s.length();i++){
int c=s.charAt(i);
if(c>=97&&c<=122)
count[c-97]++;
}
for(int j=0;j<26;j++){
if(count[j]==0)
reAlphabet.remove(j);
}
return reAlphabet;
}

public ArrayList calculateFrequencies(ArrayList a){

Frequency.size=reAlphabet.size;

for(int i=0;i<26;i++){
if(count[i]!=0)
Frequency.add(count[i]);
}
return Frequency;
}

public void displayFrequencies(){
for(int i=0;i<reAlphabet.size();i++){
System.out.print(reAlphabet.get(i)+"--"+Frequency.get(i));
for(int j=0;j<Frequency.get(i);j++){
System.out.print("*");
}
System.out.println();
}
}
public static void main(String args[]){
buildAlphabet( );
ArrayList a=removeNonLetters(args[0]);
calculateFrequencies(a);
displayFrequencies();
}
}

搜索更多相关的解决方案: 静态  

----------------解决方案--------------------------------------------------------

编译器已经非常明确地告诉你了

无法从静态上下文中引用非静态 方法 buildAlphabet
在你的main方法里面是不能直接用buildAlphabet这个方法的,因为它是非静态的,你要用非得生成一个对象,然后用对象去调用它


----------------解决方案--------------------------------------------------------
回复:(Just217)[求助]无法从静态上下文中引用非静态...
可以具体点么..我新学java没多久,希望楼上的大哥能具体一点,最好能举个例子啥的
----------------解决方案--------------------------------------------------------

一个很简单的方法,就是所有的成员变量都声明static ,所有的方法也声明成static的


----------------解决方案--------------------------------------------------------
以下是引用千里冰封在2007-5-19 10:51:41的发言:

一个很简单的方法,就是所有的成员变量都声明static ,所有的方法也声明成static的

这样对功能有什么影响么?


----------------解决方案--------------------------------------------------------

当然有,这样你生成的对象就没 有意义了


----------------解决方案--------------------------------------------------------
  相关解决方案