Java - 三元运算符不工作。编译器声明它不是语句
Java - ternary Operator not working. Compiler stating it's not a statement
(unprocessed_information.replace("type:","").equals("teacher")) ?
(admin_accounts.add(username)) : (null);
表明它是 not a statement
的信息;这可以用 if 语句来完成,但如果使用三元运算符来完成,效率会好得多;
如果有人能告诉我这个声明有什么问题。非常感谢。
功能代码:https://hastebin.com/heriqoripi.vbs
函数信息
o - A class 有一个充满字符串的数组,它使用 for-each 循环剪切信息以创建帐户(我还没有进行加密,因为我还不知道如何进行哈希加密。)
private void update_accounts() throws IOException{
String[] contents_Of_File = fileHandling.retrieve_contents();
String username = "";
String password = "";
String unprocessed_information = "";
int char_count = 0;
account_information = new HashMap<>();
if(contents_Of_File == null){
System.out.println("The contents of the file is empty" );}
else{
for(String S : contents_Of_File){
if(S != null){
for(char c : S.toCharArray()){
char_count++;
if(c == delimiter || c == fileHandling.getDelimiter()){
if(unprocessed_information.contains("username:")){username = unprocessed_information.replace("username:", "");}
if(unprocessed_information.contains("password:")){password = unprocessed_information.replace("password:","");}
unprocessed_information="";}
else if(char_count == S.length()){
unprocessed_information += c;
if(unprocessed_information.contains("type:")){
( unprocessed_information.replace("type:","").equals("teacher") ) ? (admin_accounts.add(username)) : (null);
}
unprocessed_information="";
}
else{
unprocessed_information += c;}
}
if(! account_information.containsKey(username)){
System.out.println("o SYSTEM - username:" + username + ", password:" + password + " - have been inputted into the databse.");}
account_information.put(username, password);
unprocessed_information = "";
char_count = 0;}
else{break;}
}
}
}
三元运算符表达式不是语句:您不能单独使用它们来替代 if
。
你应该写
if (unprocessed_information.contains("type:")) {
( unprocessed_information.replace("type:","").equals("teacher") ) ? (admin_accounts.add(username)) : (null);
}
如:
if (unprocessed_information.contains("type:")) {
if (unprocessed_information.replace("type:","").equals("teacher")) admin_accounts.add(username);
}
或(更好,因为第一个 if
中没有任何内容,但第二个 if
):
if ( unprocessed_information.contains("type:")
&& unprocessed_information.replace("type:","").equals("teacher") ) {
admin_accounts.add(username);
}
或(恕我直言更好,因为它方式更清晰):
if ( unprocessed_information.equals("type:teacher")
|| unprocessed_information.equals("ttype:eacher")
|| unprocessed_information.equals("tetype:acher")
|| unprocessed_information.equals("teatype:cher")
|| unprocessed_information.equals("teactype:her")
|| unprocessed_information.equals("teachtype:er")
|| unprocessed_information.equals("teachetype:r")
|| unprocessed_information.equals("teachertype:") ) {
admin_accounts.add(username);
}
;-)
(unprocessed_information.replace("type:","").equals("teacher")) ?
(admin_accounts.add(username)) : (null);
表明它是 not a statement
的信息;这可以用 if 语句来完成,但如果使用三元运算符来完成,效率会好得多;
如果有人能告诉我这个声明有什么问题。非常感谢。
功能代码:https://hastebin.com/heriqoripi.vbs
函数信息 o - A class 有一个充满字符串的数组,它使用 for-each 循环剪切信息以创建帐户(我还没有进行加密,因为我还不知道如何进行哈希加密。)
private void update_accounts() throws IOException{
String[] contents_Of_File = fileHandling.retrieve_contents();
String username = "";
String password = "";
String unprocessed_information = "";
int char_count = 0;
account_information = new HashMap<>();
if(contents_Of_File == null){
System.out.println("The contents of the file is empty" );}
else{
for(String S : contents_Of_File){
if(S != null){
for(char c : S.toCharArray()){
char_count++;
if(c == delimiter || c == fileHandling.getDelimiter()){
if(unprocessed_information.contains("username:")){username = unprocessed_information.replace("username:", "");}
if(unprocessed_information.contains("password:")){password = unprocessed_information.replace("password:","");}
unprocessed_information="";}
else if(char_count == S.length()){
unprocessed_information += c;
if(unprocessed_information.contains("type:")){
( unprocessed_information.replace("type:","").equals("teacher") ) ? (admin_accounts.add(username)) : (null);
}
unprocessed_information="";
}
else{
unprocessed_information += c;}
}
if(! account_information.containsKey(username)){
System.out.println("o SYSTEM - username:" + username + ", password:" + password + " - have been inputted into the databse.");}
account_information.put(username, password);
unprocessed_information = "";
char_count = 0;}
else{break;}
}
}
}
三元运算符表达式不是语句:您不能单独使用它们来替代 if
。
你应该写
if (unprocessed_information.contains("type:")) {
( unprocessed_information.replace("type:","").equals("teacher") ) ? (admin_accounts.add(username)) : (null);
}
如:
if (unprocessed_information.contains("type:")) {
if (unprocessed_information.replace("type:","").equals("teacher")) admin_accounts.add(username);
}
或(更好,因为第一个 if
中没有任何内容,但第二个 if
):
if ( unprocessed_information.contains("type:")
&& unprocessed_information.replace("type:","").equals("teacher") ) {
admin_accounts.add(username);
}
或(恕我直言更好,因为它方式更清晰):
if ( unprocessed_information.equals("type:teacher")
|| unprocessed_information.equals("ttype:eacher")
|| unprocessed_information.equals("tetype:acher")
|| unprocessed_information.equals("teatype:cher")
|| unprocessed_information.equals("teactype:her")
|| unprocessed_information.equals("teachtype:er")
|| unprocessed_information.equals("teachetype:r")
|| unprocessed_information.equals("teachertype:") ) {
admin_accounts.add(username);
}
;-)