2012-04-23 9 views
7
String mins = minsField.getText(); 

    int Mins; 
    try 
    { 
     Mins = Integer.parseInt(mins); 

    } 
    catch (NumberFormatException e) 
    { 
     Mins = 0; 
    } 

    double hours = Mins/60; 

    hours.setText(hoursminsfield); 

Sorun şu ki, Double cannot be dereferenced.İki kişi daha önce kullanılamaz?

+0

bu ne dili böyle almak için yukarıdaki ifadeyi kullanmak ne olacak? JavaScript? –

+0

Yeh adam java –

+16

java! = Javascript –

cevap

14

DÜZENLEME 4/23/12

double cannot be dereferenced bir ilkel bir yöntemi çağırmak çalıştığınızda bazı Java derleyicileri vermek hatadır. Bana double has no such method'un daha faydalı olacağını düşünüyorum, ama ne biliyoruz. Kodunuzdaki itibaren

, hours.setText (hoursminfield) yaparak size hoursminfield içine hours bir metin temsilini kopyalayabilirsiniz düşünüyorum görünüyor; Bu, birkaç hata içeriyor: 1) saat, ilkel bir tür olan bir double, üzerinde arayabileceğiniz NO yöntemleri vardır. Bu size sorduğunuz hatayı veriyor. 2) hangi saatin nasıl çalıştığını söylemiyorsunuzdur, belki henüz bildirmediniz. 3) Bir değişkenin değerini, bir yöntemin argümanı olarak ayarlayarak alışılmadık bir durumdur. Bazen olur ama bazen olmaz. İstediğiniz gibi görünüyor ne kod

hatları şunlardır: double hours = Mins/60; yılında

iki int s bölünüyor:

String hoursrminfield; // you better declare any variable you are using 

// wrap hours in a Double, then use toString() on that Double 
hoursminfield = Double.valueOf(hours).toString(); 

// or else a different way to wrap in a double using the Double constructor: 
(new Double(hours)).toString(); 

// or else use the very helpful valueOf() method from the class String which will 
// create a string version of any primitive type: 
hoursminfield = String.valueOf(hours); 

ORİJİNAL YANIT (Kodunuzdaki farklı bir problemi ele alınmıştır). Bu bölümün int değerini alacaksınız, bu nedenle Mins = 43 ise; iki saat = Mins/60; // Mins/60 bir int = 0'dır. Bunu iki saate atama // saat değerini bir çift sıfıra eşit yapar.

Ne yapmanız gereken geçerli:

double hours = Mins/((double) 60); 

veya buna benzer bir şey, sen double s değil int ile yapılacak bölünmesini zorlamak amacıyla bir double için bölünme kısmını döküm gerekir s.

+0

Teşekkürler heaps kardeşim, harika çalışıyor: D <3 –

+0

Bana bir tavsiyede bulunursam, bana bir tavsiyede bulunursanız çok iyi olur. –

+1

Bu harika, kabul edilen bir cevap doğru, ve aşağı iniyorum! Belki de sizden biri güç kullanan kullanıcılara nedenini söyleyebilir. – mwengler

2

Dili belirtmediniz, ancak Java ise, temel türü double ve Double sınıfı arasında büyük bir fark var.

Her durumda, setText'unuz yanlış bir şekilde görünüyor. setText yöntem veri alanına ait olur, sen çalışıyorsun değil veri orada koymak için: Başka bir deyişle

hoursminsfield.setText (hours); 

, sadece kullanarak, çift sahadaki metnini ayarlamak istediğiniz hesapladık. Bir çift geçebilir olsun, incelemek gerekir farklı bir konudur.

başka şey: Mins bir integer` ise

double hours = Mins/60; 

, size daha sonra bir çift koymak bir tamsayı değeri verecektir. Yani kesilecek demektir. Eğer bölünme aşağıdaki hassasiyetli tutmak emin olmak istiyorsanız, gibi bir şey kullanabilirsiniz:

double hours = (double) Mins/60.0; 

(sadece bir bu değişiklikleri ile çalışabilir olsa da, tüm terimler açık yapmayı tercih).

+0

Evet java'm kötü, ama nasıl tamir edebileceğimi söyleyebilir misiniz? bu? Lütfen? lol –

+2

Uhm, yaptılar. Double'da sadece bir sayı olduğu için setText değerini çağıramazsınız. Herhangi bir metin içermediği için bir 'setText' yöntemine sahip değil ... –

+0

ahh tamam, ne yapabilirim? Bu konuda oldukça yeni olmama neden oluyor ve –

0

nasıl bu şekilde

double hours = Mins/60.0 

Hep çifte değerini