อัปเดตคำถาม[อัปเดต]*
: *
- ในโค้ด Termometr แสดง 0 - หน้าจอ
ทำไมฉันไม่สามารถแทรกตัวแปร temp
จาก DBData.java
ลงใน final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp));
ใน Tempo.java ได้ [ฉันต้องการวางไว้ในชุดข้อมูล ฉันต้องการแผนภูมิพล็อตเช่นเทอร์โมมิเตอร์ที่มีค่า temp
จาก DBData.java ]
ฉันรู้ว่าใน DBData.java ใน void ConnectDB()
TemperaturaPow
คือ String ดังนั้นฉันจึงแยกวิเคราะห์เป็นสองเท่า ฉันพยายามแยกวิเคราะห์ temp
เป็นจำนวนเต็ม แต่ไม่มีผลลัพธ์
ใน Tempo.java ฉันสามารถใช้ System.out.println(dbData.temp) และ IDEA แสดงให้ฉันเห็นตัวอย่าง 9.0 แต่ JFreeChart Termometr กำลังแสดงค่า "0" เป็นศูนย์
Tempo.java
public class Tempo extends ApplicationFrame {
public Tempo(final String title){
super(title);
DBData dbData = new DBData();
final double temp = dbData.temp;
final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp)); <<<-------
final ThermometerPlot plot = new ThermometerPlot(dataset);
final JFreeChart chart = new JFreeChart("Termometr",JFreeChart.DEFAULT_TITLE_FONT,plot,false);
plot.setThermometerStroke(new BasicStroke(2.0f));
plot.setThermometerPaint(Color.lightGray);
final ChartPanel chartPanel = new ChartPanel(chart);
setContentPane(chartPanel);
}
public static void main(String[] args){
DBData dbData = new DBData();
dbData.ConnectDB();
final Tempo demo = new Tempo("Thermometr demo");
demo.pack();
demo.setVisible(true);
System.out.println(dbData.temp);
}
}
DBData.java
public class DBData {
public double temp;
private Connection con;
private Statement st;
private ResultSet rs;
void ConnectDB(){
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://XXX
"passs");
st = con.createStatement();
System.out.println("Połączono z BD");
String query = "SELECT * FROM X ORDER BY id DESC LIMIT 1";
rs = st.executeQuery(query);
System.out.println("Records from MySQL");
while (rs.next()) {
String TemperaturaPow = rs.getString("TemperaturaPow");
System.out.println(TemperaturaPow);
temp = Double.parseDouble(TemperaturaPow); <<<----------
System.out.println(temp);
}
} catch (Exception ex) {
System.out.println("Error: " + ex);
}
}
void initialize(){
ConnectDB();
}
}
[อัปเดต]*
ฉันเพิ่ม try ใน DBData.java
เพื่อตรวจสอบว่าแยกวิเคราะห์เป็นสองเท่าหรือไม่
while (rs.next()) {
String TemperaturaPow = rs.getString("TemperaturaPow");
System.out.println(TemperaturaPow);
temp = Double.parseDouble(TemperaturaPow); <<<----------
System.out.println(temp);
try{
temp = Integer.parseInt(TemperaturaPow);
}catch (NumberFormatException e){
System.out.println("Error parse: " + e);
}
Intellji prints for me :
Error parse: java.lang.NumberFormatException: For input string: "7.7"
0.0
0.0
If I use :
try{
temp = Double.parseDouble(TemperaturaPow);
}catch (NumberFormatException e){
System.out.println("Error parse: " + e);
}
Intellji พิมพ์ให้ฉัน:
7.7 7.7 แต่เทอร์โมมิเตอร์วาดไม่ได้ - รับค่า null หรือ 0 ?
DefaultValueDataset dataset
ใน Tempo.java จึงไม่สามารถใช้ตัวแปรtemp
จากคลาสอื่นและวาดแผนภูมิ/แสดงอุณหภูมิในเทอร์โมมิเตอร์ - เทอร์โมมิเตอร์แสดง 0 :) - person TomaszBag   schedule 25.02.2017