Что это означает, когда на статический метод нельзя ссылаться из статического контекста?
Я попытался запустить это в основном методе без статического, и это сработало, но это действительно не помогает мне. Как мне исправить это?
public class GV
{
public String getVowel(String n)
{
String[]vowels= { "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"};
for (int i=0; i< n.length()-1; i++)
{
for (int m=0; m< vowels.length -1; m++)
{
if (n.substring(i, i+1). equals (vowels[m]))
return n.substring( i, i+1);
}
}
{
return n.substring(-1);
}
}
public static void main( String[] args)
{
String n = "orange";
System.out.println("The amount of vowels are" + getVowel(n));
}
}
2 ответа
Решение
Это означает только то, что сказано: вы не можете называтьstatic
метод из static
метод. Один из подходов - просто объявить getVowel
метод быть static
:
public static String getVowel(String n) { . . . }
Это работает только в этом случае, потому что getVowel
не использует никакой информации об экземпляре внутри. В общем, тем не менее, вам нужно создать экземпляр GV и вызвать метод как метод экземпляра:
public static void main( String[] args)
{
String n = "orange";
GV gv = new GV();
System.out.println("The amount of vowels are" + gv.getVowel(n));
}
Нестатический метод - это метод экземпляра класса. Вы должны создать класс для его запуска. это действительно самые основы программирования...
вот правильный путь:
public class GV
{
public String getVowel(String n)
{
String[]vowels= { "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"};
for (int i=0; i< n.length()-1; i++)
{
for (int m=0; m< vowels.length -1; m++)
{
if (n.substring(i, i+1). equals (vowels[m]))
return n.substring( i, i+1);
}
}
{
return n.substring(-1);
}
}
public static void main( String[] args)
{
String n = "orange";
System.out.println("The amount of vowels are" + new GV().getVowel(n));
}
}