2017-12-17 2 views
-1

Ich hoffe, ich habe irgendwo einen seltsamen Tippfehler, aber ich bin verblüfft. Ich habe den folgenden Code:Zweites langes Argument ignoriert?

public void getAvailableStorage() { 
     File path = Environment.getDataDirectory(); 
     StatFs stat = new StatFs(path.getPath()); 
     long blockSize = stat.getBlockSizeLong(); 
     long availableStorage = blockSize * stat.getAvailableBlocksLong(); 
     long totalStorage = blockSize * stat.getBlockCountLong(); 
     mBackupView.showAvailableStorage(availableStorage, totalStorage); 
    } 

Ein Haltepunkt in der letzten Zeile dort zeigt, dass totalStorge und availableStorage gerade fein berechnet wird. Übergang zu showAvailableStorage();

public void showAvailableStorage(long free, long total) { 
     float freePercentage = (float)(free/total) * 100; 
    } 

Aus irgendeinem Grund erhält nur das erste Argument einen Wert. Dies ist unabhängig davon, in welcher Reihenfolge ich die Werte von getAvailableStorage() übergebe. Das zweite Argument (total) wird nur ignoriert breaking at Methode gibt mir nur einen Wert für das erste Argument. Was fehlt mir hier? Selbst das Übergeben willkürlicher Werte an die Methode führt zum gleichen Ergebnis.

EDIT: Dies funktioniert jedoch aus irgendeinem Grund ...

public void showAvailableStorage(long free, long total) { 
     long newTotal = total; 
     float freePercentage = (float)(free/total) * 100; 
    } 
+0

viele Zeitpunkte funktionieren nicht wie erwartet. Sie zeigen einen merkwürdigen Wert. können Sie sowohl den Wert vor dem Aufruf der Methode 'showAvailableStorage()' protokollieren als auch nach der Berechnung von 'freePercentage' wieder alle drei Werte protokollieren. –

+0

Wenn Sie nicht den zweiten Wert erhalten, bedeutet das, dass der Standardwert von total 0 ist. Sie sollten also eine 'DivideByZeroException' erhalten. bekommst du das? –

+0

@SaranSankaran Sie haben Recht. Es ist scheinbar nur ein Debugger-Bug. Der Wert stellt sich als richtig heraus, er wurde nicht im Debugger angezeigt. Vielen Dank. – ardevd

Antwort

0

Viele Male der Debugger funktioniert nicht wie erwartet und zeigt einige seltsame Wert. Ihr Code ist jedoch korrekt.

Sie können versuchen, die Werte zu protokollieren, um den genauen Wert zu ermitteln.

0

stellte sich heraus, das Problem scheinbar durch einen Fehler in dem Debugger verursacht wird. Der korrekte Wert wurde zwar weitergegeben, aber beim Durchlaufen nicht im Debugger angezeigt.

Verwandte Themen