OK, mi sento buono perché è Natale, perciò posterò una risposta esauriente comunque

.
Prima di tutto indicherò i vari errori/imprecisioni/sviste che ho notato nel tuo codice:
class schema
{
public static String cena(String s)
{
String x="";
//la sequenza è "lineare", ciò significa che continua in modo lineare e ripetitivo
//i tre puntini alla fine sono "di sospensione", per indicare una sequenza infinita
//perciò il seguente array produce un output sbagliato
String [] c = {"+","+","+","-","-","-","+","+","+","-","-","-",
"+","+","+","-","-","-","+","+","+","-","-","-","*","*","*"};
//considerato che la condizione di un ciclo for (o while, ecc...) viene valutata
//nuovamente per ogni iterazione, è meglio non calcolare più volte il valore di
//una funzione, come invece si fa con "s.length()" nel tuo esempio
for (int i=0; i<s.length();i++)
{
//nel caso di una sequenza di simboli (che essendo infinita nel nostro caso, non è rappresentabile
//tramite array) è preferibile confrontare valori char piuttosto che forzare un compareTo tra oggetti
//String (che è la nuovamente l'esecuzione di un metodo), cioè usare "==" tra oggetti String.
if (c[i]=="+")
//queste parentesi sono inutili (suggerimento estetico, non propriamente errore)
{
x+=s.charAt(i);
}
}
return x;
}
}
Inoltre non c'è motivo di utilizzare ben 2 classi per un esercizio di così breve risoluzione.
Per quanto riguarda l'errore segnalatoti dal compilatore, rispondendo anche a- e correggendo l'errata osservazione di-
Vivynz (non me ne voglia, è fatto tutto a fin di bene

), questo tuo codice:
String s = "abcdefghilmno";
s.cena();
tenta di richiamare il metodo
cena su un oggetto di tipo String, che non ha (vedi javadoc) sicuramente tale metodo fra quelli disponibili (pubblicamente).
Inoltre, anche il suggerimento di
Vivynz è sbagliato, in quanto tale metodo non fa parte dello scope di visibilità (a livello classe) della classe
schema15, in uno dei metodi della quale tale metodo è richiamato.
Piuttosto, penso che tu volessi scrivere:
String s = "abcdefghilmno";
[...]schema.cena(s);
ove [...] indica una omissione di codice, come ad esempio un
System.out.println().
cioè infine avresti dovuto scrivere qualcosa come:
String s = "abcdefghilmno";
System.out.println (schema.cena(s));
Come ultima cosa, posto un'altra soluzione al problema che usa una funzione in qualche modo
generatrice di sequenze
regolari infinite (lineari) di simboli +++--- (ecc...).
public class schema15
{
private static char elementoSequenza (int indice)
{
//cioè se indice è 0,1,2,6,7,8,12,13,14,...
//ovvero se il resto della divisione di indice con 6 (gruppi da 6) è 0,1 o 2
//mi viene generato un '+' altrimenti un '-';
if ((indice % 6) < 3)
return '+';
else
return '-';
//(da notare che tale return si può unificare tramite "if aritmetico" nella forma:
// condizione?then:else
}
private static String cena (String s)
{
String x = "";
int max = s.length ();
for (int i = 0; i < max; i++)
if (elementoSequenza (i) == '+')
x += s.charAt (i);
return x;
}
public static void main(String [] args)
{
String s = "abcdefghilmno";
System.out.println (cena (s));
}
}
Salut

.
Spero di essermi stato fatto avuto capire

!