Обновить вопрос[Update]*
: *
- в коде Термометр показывает 0 - скрин
Почему я не могу вставить переменную temp
из DBData.java
в final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp));
в Tempo.java [я хочу поместить ее в набор данных, я хочу построить диаграмму типа термометра со значением temp
из DBData.java]
Я знаю, что в DBData.java в void ConnectDB()
TemperaturaPow
есть строка, поэтому я анализирую ее как двойную. Я попытался разобрать 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();
}
}
[Обновлять]*
Я добавил попытку в 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);
}
Intelji печатает для меня:
7.7 7.7 Но термометр не может рисовать - он получает ноль или 0 ?
DefaultValueDataset dataset
в Tempo.java не может взять переменнуюtemp
из другого класса и нарисовать график/показать температуру в термометре - термометр показывает 0 :) - person TomaszBag   schedule 25.02.2017