¿Por qué no puedes hacer una asignación condicional en una breve declaración IF?

Estoy tratando de actualizar softcount para mi juego de Blackjack para tener en cuenta los Ases que se juegan (valor 11 o 1). Cuando se usa la instrucción IF de formato corto, ¿por qué la primera línea de código es incorrecta, pero la segunda línea está bien? ¿Es este tipo de sentencia if limitada?

(counter > 1) ? (softcount+=1) : (softcount+=value); // bad


softcount += (counter > 1) ? 1 : value; // good
Respuesta 1

Es simplemente cómo se define el idioma.

Solo ciertas expresiones, expresiones de enunciados, se pueden convertir en un enunciado agregando ;. (La expresión de declaración + ;es una declaración de expresión ).

De JLS Sec 14.8 :

ExpressionStatement:
  StatementExpression ;

StatementExpression:
  Assignment 
  PreIncrementExpression 
  PreDecrementExpression 
  PostIncrementExpression 
  PostDecrementExpression 
  MethodInvocation 
  ClassInstanceCreationExpression

Las expresiones condicionales no son expresiones de enunciados.

Respuesta: 2

El ternario debe ser visto como una forma de evaluar algo y no como una forma de aplicar un procesamiento.
Entonces, espera algunas expresiones después, ?pero escribió declaraciones: softcount+=1y (softcount+=value)en el primer código.
En el segundo código, está bien porque especificó dos expresiones: 1y value.

Además, ¿realmente encuentras este código un poco corto?

(counter > 1) ? (softcount+=1) : (softcount+=value); // bad

Repites la parte de incremento.

Lo que quieres en tu caso es solo:

if (counter > 1) { softcount+=1;} else {softcount+=value;)
Respuesta: 3

Tengo reglas de babeo donde estoy comparando valores numéricos de un objeto java con un número en la regla y si la regla es verdadera, se incrementa un contador que está en el objeto java. Finalmente si el ...

hola a todos, no puedo recibir mensajes asincrónicos usando mq activo, debajo del código que estoy usando para publicar mensajes y suscribirme. publicMessage de clase pública extiende HttpServlet {...

Esta es una parte de mi código a continuación. Cuando uso el bucle for (comentado), funciona. Cuando uso esta transmisión, funciona un poco, pero luego se comporta mal en un método que nunca esperaría. ...

Todas las guías por ahí me dicen cómo eliminar las etiquetas HTML del texto para extraer el texto entre ellas. Lo que busco es la extracción de los datos que están dentro de las etiquetas HTML. p.ej ...