插入IF语句-Java
我经常遇到这个问题,我想在类中插入一个IF语句,但总是返回非法的类型/表达式开头错误 这里有什么我做错了吗,如果有,有人能告诉我应该把这些if语句放在哪里吗 我需要一个IF语句,如:插入IF语句-Java,java,if-statement,Java,If Statement,我经常遇到这个问题,我想在类中插入一个IF语句,但总是返回非法的类型/表达式开头错误 这里有什么我做错了吗,如果有,有人能告诉我应该把这些if语句放在哪里吗 我需要一个IF语句,如: IF (RList.contains(r1.getRouteName() == "Route2")) c1.setCollision1(b1.getStartTime ++ c1.getCollision1) ELSE c1.setCollision2(b1.getStartTime ++ c1.getColli
IF (RList.contains(r1.getRouteName() == "Route2"))
c1.setCollision1(b1.getStartTime ++ c1.getCollision1)
ELSE
c1.setCollision2(b1.getStartTime ++ c1.getCollision2)
我知道这很可能是错的,但无论如何。
我想在下面的类中插入这段代码
import javax.swing.*;
import java.sql.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Student s2 = new Student();
Booking b1 = new Booking();
Route r1 = new Route();
Route r2 = new Route();
Examiner e1 = new Examiner();
Examiner e2 = new Examiner();
Collision c1 = new Collision();
//New Student
s2.setStudentId(Integer.parseInt(JOptionPane.showInputDialog("Enter ID for Student 2: [0001]")));
s2.setFname(JOptionPane.showInputDialog("Enter first name of Student 2: "));
s2.setLname(JOptionPane.showInputDialog("Enter last name of Student 2: "));
s2.setAddress(JOptionPane.showInputDialog("Enter address for Student 2: "));
s2.setPhoneNo(JOptionPane.showInputDialog("Enter phone number for Student 2: "));
s2.setOtherDetails(JOptionPane.showInputDialog("Enter other details for Student 2: "));
JOptionPane.showMessageDialog(null,"Student Two: \n" + s2.toString());
//End of New Student
//New Booking
b1.setBookingId(Integer.parseInt(JOptionPane.showInputDialog("Enter ID for Booking 1: [0001]")));
b1.setBookingType(JOptionPane.showInputDialog("Enter Booking Type for Booking 1: [Exam or Lesson]"));
b1.setStartTime(Double.parseDouble(JOptionPane.showInputDialog("EnterStart time for Booking 1: ")));
b1.setEndTime(Double.parseDouble(JOptionPane.showInputDialog("Enter address for Student 2: ")));
b1.setBookingDate(JOptionPane.showInputDialog("Enter Date for Booking 1: [01-JAN-2012]"));
b1.setHistory(JOptionPane.showInputDialog("Enter name of previous examiner 2: [enter 'null' if no previous]"));
JOptionPane.showMessageDialog(null,"Booking One: \n" + b1.toString());
//End of New Booking
//Set the Routes
r1.setRouteId(0001);
r1.setRouteName("Route1");
r1.setEndTime(0.40);
r2.setRouteId(0002);
r2.setRouteName("Route2");
r2.setEndTime(0.50);
//End Set Routes
//Create Examiners
e1.setExaminerId(0001);
e1.setName("John Murphy");
e1.setOtherDetails("ADI Registered");
e2.setExaminerId(0002);
e2.setName("Lucy Casey");
e2.setOtherDetails("ADI Registered");
//End Create Examiners
// <editor-fold defaultstate="collapsed" desc="Connect to database and insert data into database">
String strConn = "jdbc:oracle:thin:@oracle.staff.ittralee.ie:1521:orcl";
String strUser = "*";
String strPassword = "*";
try {
Driver drv = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(drv);
Connection conn = DriverManager.getConnection(strConn, strUser, strPassword);
//code to execute commands...
// </editor-fold>
//StudentInsert
String query = "INSERT INTO Student(STUDENTID, FNAME, LNAME, ADDRESS, " +
"PHONENO, OTHERDETAILS) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setInt(1, s2.getStudentId());
pstmt.setString(2, s2.getFname());
pstmt.setString(3, s2.getLname());
pstmt.setString(4, s2.getAddress());
pstmt.setString(5, s2.getPhoneNo());
pstmt.setString(6, s2.getOtherDetails());
pstmt.executeUpdate();
//End Student Insert
//Booking Insert
String query1 = "INSERT INTO Booking(BOOKINGID, BOOKINGTYPE, LNAME, STARTTIME, ENDTIME, " +
"BOOKINGDATE, HISTORY) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt1 = conn.prepareStatement(query1);
pstmt1.setInt(1, b1.getBookingId());
pstmt1.setString(2, b1.getBookingType());
pstmt1.setDouble(3, b1.getStartTime());
pstmt1.setDouble(4, b1.getEndTime());
pstmt1.setString(5, b1.getBookingDate());
pstmt1.setString(6, b1.getHistory());
pstmt1.executeUpdate();
//End Booking Insert
//Returns Id of route not in use
String query2 = "SELECT R.RouteID FROM Route R WHERE RouteID not in (SELECT B.RouteId FROM Booking B)";
JOptionPane.showMessageDialog(null, query2);
//End Route not in use
//Adding routes to a list to randomly assign an examiner to a route
LinkedList< String> EList = new LinkedList< String>();
EList.add(e1.getName());
EList.add(e2.getName());
Collections.shuffle(EList);
LinkedList< String> RList = new LinkedList< String>();
RList.add(r1.getRouteName());
RList.add(r2.getRouteName());
Collections.shuffle(RList);
JOptionPane.showMessageDialog(null, "Examiner: " + EList + "\nRoute: " + RList);
//End random assign route
}
catch(SQLException e) {
System.out.println(" A SQL error: " + e.getMessage());
}
}
}
If语句应采用小写形式:
if(RList.contains(r1.getRouteName() == "Route2"))
c1.setCollision1(b1.getStartTime + c1.getCollision1)
else
c1.setCollision2(b1.getStartTime + c1.getCollision2)
这个代码是错误的
IF (RList.contains(r1.getRouteName() == "Route2"))
c1.setCollision1(b1.getStartTime ++ c1.getCollision1)
ELSE
c1.setCollision2(b1.getStartTime ++ c1.getCollision2)
应该是这样的
if (RList.contains(r1.getRouteName() == "Route2")) {
c1.setCollision1(b1.getStartTime + c1.getCollision1);
}
else {
c1.setCollision2(b1.getStartTime + c1.getCollision2);
}
也
RList.containsr1.getRouteName==Route2
不会按你想要的方式工作。第一个字符串应该使用等于而不是==进行比较,如中所示
r1.getRouteName.equalsRoute2
其次,如果根据r1.getRouteName.equalsRoute2的结果检查RList是否包含值true或false,这将执行什么操作。我认为这实际上可能会导致编译器错误
如果您想确定RList是否包含r1,并且r1的路由名称是Route2,您必须这样做
if(RList.contains(r1) && r1.getRouteName().equals("Route2"))
注意:这将与上的区分大小写进行比较。对于不区分大小写,请使用equalsIgnoreCase而不是equals您是否正在尝试找出特定字符串值是否在链接列表中?如果是,则此语法应执行以下操作:
LinkedList<String> routeList = new LinkedList<String>();
routeList.add("Route 1");
routeList.add("Route 2");
Collections.shuffle(routeList);
if (routeList.contains("Route 1")) {
// do something
} else {
// do something else
}
您不能使用==运算符来比较两个字符串,使用==运算符您只能比较数值,请尝试使用equal方法来比较两个不同的字符串。如果语法不正确。您是否查阅了相关的参考手册?示例输入的问题是==不应该出现在if语句中。它返回一个布尔值,即使在语法上是正确的,它也不会被contains方法接受。但是我要说的是,即使是一个基本的if语句,比如一个2+2=4的输出仍然返回相同的错误,如果2+2==4{/*做点什么*/}就可以了。那里面的双加号呢?在谓词中,我认为预期的逻辑是:ifRList.containsRoute2.equalsr1.getRouteName尽管语义似乎有缺陷。我不知道他在那里想做什么…:s瞄准if语句哈哈。我本不想更正它,它只是一个样本。我想知道的是,在我的代码中,我可以在哪里放置一个没有错误的if语句,因为我所尝试的任何地方都不能指望你去纠正它,但我知道if语句是错误的,不管怎样,我把它作为一个快速的示例来编写。但是我要说的是,即使是一个基本的if语句,比如2+2=4,输出仍然返回相同的错误,if语句2+2=4看起来像什么?它应该看起来像是我为回应你的另一条评论而写的。也可能更安全一点。toLower可以避免任何区分大小写的问题。@GrahamSmith可能需要区分大小写,但如果不是,我建议使用equalsIgnoreCase,因为Java已经提供了它。这并不完全准确。您可以使用==来比较对象,但它比较对象是否指向相同的数据,而不是它们的值是否相等。而且==用于所有原语,而不仅仅是数字原语,所以char和boolean使用==