簡體   English   中英

為什么我必須使用Integer.parseInt?

[英]why do i have to use Integer.parseInt?

我是Java新手,如果這是一個愚蠢的問題,請原諒我。

首先,我做了以下工作(這是我的代碼的一部分):

public static void team()
    {
        int score = JOptionPane.showInputDialog("Enter the team score...");
        calculate(score);   
    }

但是我一直收到錯誤消息:“不兼容的類型字符串無法轉換為int”。 所以我認為我可能需要使用解析。 我做了以下工作,並且有效:

public static void team()
    {
        int myScore;

        String score = JOptionPane.showInputDialog("Enter the team score...");
        myScore = Integer.parseInt(score);

        calculate(myScore);

    }   

我想知道為什么我需要解析變量“分數”? 在第一段代碼中,我將變量score聲明為整數,因此它不會將我期望是Integer的輸入存儲在變量score中,該變量隨后傳遞給計算方法。 我知道解析是在將String轉換為Integer時進行的。 但是,在這種情況下,我不希望用戶輸入字符串,那么為什么需要解析?

原因很簡單:因為JOptionPane.showInputDialog() 返回String ,而不管您實際希望用戶輸入什么。

Java中沒有機制可以根據目標變量myScore的類型進行自動轉換(盡管某些其他語言可以執行此操作,例如Scala中的隱式轉換 )。

您可以(原則上)創建一個返回int的自定義對話框,例如,通過讓用戶從數字的下拉列表中進行選擇,然后就不需要解析。 但是否則,您必須顯式地進行解析。

因為字符串的存儲方式不同於整數。 整數以二進制形式存儲,而字符串形式則是字符的集合。

示例:數字14將在Binary中存儲為1110。 但是,作為字符串存儲為00110001 00110100

看看這個http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.asp

Integer.parseInt()基本上通過在查找表中查找字符來為您完成工作,並且只要它們與適當的整數值相關聯,它就會將其轉換為二進制形式並存儲為整數。

JOptionPane.showInputDialog("Enter the team score..."); 返回一個您試圖存儲在int中的字符串。 這就是為什么要獲取“不兼容類型”的原因。
有關更多信息,請參見Javadocs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM