我真想把自己的頭發扯下來。我花了一整天的時間試圖讓非常簡單的程式在Android Studio中運行,而我在其他語言和IDE中做這些都沒有問題。我遵循多個教程,只是想讓簡單的程式作業起來。我被一個致命的例外錯誤困住了,說 java.lang 不能將字串轉換為浮點。
以下是我的代碼,它是一個頁面,只是試圖將一個浮點數乘以另一個浮點數,然后將乘積加到第一個浮點數上,我留下了一些嘗試來 "解決 "這個問題,所以如果它們看起來不好,那是因為我正在嘗試所有的東西:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View。
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
編輯文本priceText, taxText, finalText。
按鈕按鈕。
float price = 0.00f。
float tax = 0.0f;
float finalprice = 0.00f;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(s savedInstanceState)。
setContentView(R.layout.activity_main)。
priceText = findById(R.id.priceText);
priceText.setText(String.valueOf(price))。
taxText = findViewById(R.id.taxText);
String str = tax "%"/span>;
taxText.setText(str)。
finalText = findViewById(R.id.finalText);
finalText.setText(String.valueOf(finalprice))。
button = findById(R.id.calcButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//String p = priceText.getText().toString();
price = convertStringToFloat(priceText.getText().toString())。
//String t = taxText.getText().toString();
tax = Float.parseFloat(String.valueOf(taxText))。
float _taxes = price * tax。
finalprice = price _taxes;
finalText.setText(String.valueOf(finalprice))。
}
});
}
public static float convertStringToFloat(String str)
{
return Float.parseFloat(str)。
}
}
當應用程式崩潰時,控制臺一直在吐出這樣的資訊:
這就是控制臺一直在吐出的資訊。
2021-09-07 10:15:34. 700 7772-7772/com.example.myapplication E/AndroidRuntime: 失敗的例外:main
行程:com.example.myapplication,PID:7772。
java.lang.NumberFormatException。對于輸入字串。"androidx.appcompat.widget.AppCompatEditText{53d2c07 VFED..CL. .F...... 312,404-762,551 #7f08019b app:id/taxText aid=1073741826}"/span>
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at com.example.myapplication.MainActivity$1.onClick(MainActivity.java:42)。
at android.view.View.performClick(View.java:7161)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View.performClickInternal(View.java:7133)
at android.view.View.access$3500(View.java:804)
at android.view.View$PerformClick.run(View.java:27416)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:7617)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)
2021-09-07 10:15:34。 728 7772-7772/com.example.myapplication I/Process。發出信號。PID: 7772 SIG: 9
uj5u.com熱心網友回復:
你似乎在這里失敗了:
你似乎在這里失敗了。
tax = Float.parseFloat(String.valueOf(taxText))。
taxText是一個EditText小組件:
EditText priceText, taxText, finalText;
如果你想獲得用戶輸入的值,請將String.valueOf(taxText)替換為taxText.getText().toString()。
注意,用戶可能仍然會輸入一個不是有效的浮點數的值,所以你仍然要在一個try/catch中包裝你的parseFloat()呼叫,并在你得到無效輸入的情況下做些什么(例如,通過Log.e()向Logcat記錄一個訊息,并向用戶提供一些錯誤反饋)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/320013.html
標籤:
