Perbarui pertanyaan[Pembaruan]*
: *
- dalam kode Termometr menunjukkan 0 - layar
Mengapa saya tidak bisa memasukkan variabel temp
dari DBData.java
ke final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp));
di Tempo.java [ Saya ingin meletakkannya di dataset, saya ingin diagram plot seperti termometr dengan nilai temp
dari DBData.java ]
Saya tahu bahwa di DBData.java di void ConnectDB()
TemperaturaPow
ada String jadi saya menguraikannya menjadi dua kali lipat. Saya mencoba mengurai temp
ke integer tetapi tidak ada hasil.
Di Tempo.java saya dapat menggunakan System.out.println(dbData.temp) dan IDEA menunjukkan kepada saya misalnya 9.0 tetapi JFreeChart Termometr menunjukkan nilai "0" nol
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();
}
}
[Memperbarui]*
Saya menambahkan coba di DBData.java
untuk memeriksa apakah parsingnya menjadi dua kali lipat.
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 mencetak untuk saya:
7.7 7.7 Namun termometer tidak dapat menggambar - ia menerima nol atau 0 ?
DefaultValueDataset dataset
di Tempo.java tidak dapat mengambil variabeltemp
dari kelas lain dan menggambar grafik/menunjukkan suhu di termometr - termometr menunjukkan 0 :) - person TomaszBag   schedule 25.02.2017