2017-06-23 4 views
-5

Je continue de recevoir les erreurs marqueurs multiples à cette ligne - Erreur de syntaxe, insérer «) » pour terminer Expression - Erreur de syntaxe sur jeton « > », invalide ( - x ne peut être réglé à une variable - erreur de syntaxe sur jeton « > », invalide ( - x ne peut pas être résolu à une variableJe continue à obtenir cette erreur quand je l'utilise intstream en Java, il est dit

public Neuron adjust(){ 
    Neuron neuron = new Neuron(layerType()); 
    IntStream.range(0, weights.length).forEach(x -> neuron.weights[x]=weights[x] + Math.random()-0.5); 
    neuron.threshold=threshold+Math.random()-0.5; 
    return neuron; 
} 
+0

c'est java 1.7, j'utilise eclipse – timmydongy

+0

savez-vous si je peux surmonter cela en éclipse, ou est-ce que je devrais obtenir java 8? – timmydongy

+0

Cela ne marchera jamais dans Java 7, Streams est venu avec Java 8. –

Répondre

2

Votre code utilise des flux et fonctions lambda qui sont nouvelles fonctionnalités de Java 8. Ces erreurs sont ce que je m'attendais à voir si vous essayez de compiler ce code en utilisant Java 7, ou avec le "1.7 compilateur niveau de conformité "que certains IDE Java 8 offrent.

Vous avez plusieurs options.

  1. Obtenez Java 8. Je recommande fortement ceci. Il a beaucoup de fonctionnalités vraiment sympa qui ne sont pas dans les versions antérieures de Java. Il existe depuis quelques années maintenant, et il n'y a vraiment aucune raison de ne pas l'utiliser pour tout votre développement Java.
  2. Réécrivez votre code en utilisant les fonctions disponibles dans Java 7. La ligne de code qui vous donne toutes ces erreurs peut être écrite comme suit.

.

for(int x = 0; x < weights.length; x++) { 
    neurons.weights[x] = weights[x] + Math.random() - 0.5; 
} 

Franchement, j'écrire le code de cette façon, même si j'utiliser Java 8. La plupart des gens trouveraient la boucle for plus facile à lire que la ligne de code que vous avez écrit. Il ne sert à rien d'utiliser les flux et les lambdas lorsqu'une boucle simple et claire fera l'affaire.