Javaの三元演算子:error: not a statement
2213 ワード
次のコード・タイムズを実行します.
エラーの原因は次のとおりです.
Javaの三元演算子:C++との違い
Javaではn>=90?(grade = "A"):(n>=60?(grade = "B"):(grade = "C")); これはただの式で、文を構成しません.
JAVAでは式に対して特定の要求があります. 式E;
式文を作成するには、式Eは、1)付与式、2)自己増加++式、3)自己減少--式、4)メソッド呼び出し式、5)new式(オブジェクト作成式)のみでなければなりません.
次の言い方はもっと理解しやすいです.
[条件文]?[式1]:[式2]条件文が真の実行式1である場合、それ以外の場合、実行式2.式1または式2には戻り値が必要である.すなわち、式1または式2は、整数123のようないくつかの値であってもよい.私のコードではgrade=「B」は付与文であり、何の値が戻ってくるかは戻りません.
正しいコード:
参考投稿:
どうして【三元演算子】は独立して文を作ることができなくて、値を返す方法があって独立して文を作ることができますか?
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
/**
*
* : >=90 A ,60-89 B ,60 C 。
* (a>b)?a:b
*/
class ClassifyGrade
{
public static void main(String[] args)
{
System.out.println(" :");
Scanner aInt = new Scanner(System.in);
int score = aInt.nextInt(); //
String grade = classify(score);
System.out.println(grade);
}
public static String classify(int n)
{
n>=90?(grade = "A"):(n>=60?(grade = "B"):(grade = "C"));
return grade;
}
}
エラー:Main.java:26: error: not a statement
n>=90?(grade = "A"):(n>=60?(grade = "B"):(grade = "C"));
^
1 error
エラーの原因は次のとおりです.
Javaの三元演算子:C++との違い
Javaではn>=90?(grade = "A"):(n>=60?(grade = "B"):(grade = "C")); これはただの式で、文を構成しません.
JAVAでは式に対して特定の要求があります. 式E;
式文を作成するには、式Eは、1)付与式、2)自己増加++式、3)自己減少--式、4)メソッド呼び出し式、5)new式(オブジェクト作成式)のみでなければなりません.
次の言い方はもっと理解しやすいです.
[条件文]?[式1]:[式2]条件文が真の実行式1である場合、それ以外の場合、実行式2.式1または式2には戻り値が必要である.すなわち、式1または式2は、整数123のようないくつかの値であってもよい.私のコードではgrade=「B」は付与文であり、何の値が戻ってくるかは戻りません.
正しいコード:
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
/**
*
* : >=90 A ,60-89 B ,60 C 。
* (a>b)?a:b
*/
class ClassifyGrade
{
public static void main(String[] args)
{
System.out.println(" :");
Scanner aInt = new Scanner(System.in);
int score = aInt.nextInt(); //
String grade = classify(score);
System.out.println(grade);
}
public static String classify(int n)
{
String grade = n>=90? "A":(n>=60? "B":"C");
return grade;
}
}
参考投稿:
どうして【三元演算子】は独立して文を作ることができなくて、値を返す方法があって独立して文を作ることができますか?