插入IF语句-Java

插入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语句,但总是返回非法的类型/表达式开头错误

这里有什么我做错了吗,如果有,有人能告诉我应该把这些if语句放在哪里吗

我需要一个IF语句,如:

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使用==