【问题标题】:int EditText & if/else Statement to get a string, what is wrong?int EditText & if/else 语句获取字符串,有什么问题?
【发布时间】:2016-03-22 20:06:00
【问题描述】:

我的代码是关于如果用户输入 pH 值(正常 pH=7.35-7.45)它会给他答案是它是酸性 pH 还是碱性 pH 或正常,然后我想保存一个名为 phStatus 的字符串作为答案在onclick方法后的resultTextView中最后与其他字符串一起调用,这里是:

Button resultButton = (Button) findViewById ( R.id.resultButton );
        final TextView resultTextView = (TextView) findViewById ( R.id.resultTextView );

        resultButton.setOnClickListener ( new OnClickListener ( ) {
            @Override
            public void onClick ( View v )
                            {
            EditText phET = (EditText) findViewById ( R.id.phEditText );
            int phEntered = Integer.parseInt ( phET.getText ( ).toString ( ) );
            String phStatus = "";
            if ( phEntered < 7.35 )
                {phStatus = "Acidosis";}
            else if ( phEntered > 7.45 )
                {phStatus = "Alkalosis";}
            else 
                {phStatus = "Normal acid-base balance";}


                String resultMSG = "This is " + phStatus;

                                resultTextView.setText ( resultMSG );
                            }   

【问题讨论】:

  • 那么问题出在哪里?
  • 您正在检查 integerdouble,这可能是问题所在..尝试将字符串转换为 Double phEntered Double.parseDouble(phET.getText ( ).toString ( ) ); 的两倍。
  • 它正在按照 Deepak 的回答工作,谢谢老兄

标签: android string if-statement android-edittext int


【解决方案1】:

试试这个...
添加 try catch 块来处理异常。

Button resultButton = (Button) findViewById ( R.id.resultButton );
    final TextView resultTextView = (TextView) findViewById ( R.id.resultTextView );

    resultButton.setOnClickListener ( new OnClickListener ( ) {
        @Override
        public void onClick ( View v ) {
          // TODO Auto-generated method stub
          EditText phET = (EditText) findViewById ( R.id.phEditText );
          try{
            double phEntered = Double.parseDouble ( phET.getText ( ).toString ( ) );
            String phStatus = "";
            if ( phEntered < 7.35 ) {
               phStatus = "Acidosis";
            }else if ( phEntered > 7.45 ) {
               phStatus = "Alkalosis";
            }else {
               phStatus = "Normal acid-base balance";
            }
             String resultMSG = "This is " + phStatus;
             resultTextView.setText ( resultMSG );
             Toast.makeText ( getApplicationContext ( ), "Not Long Enough :(", 1000 ).show ( );
          }catch(Exception e){
            // exception handle here
          }
       }    

【讨论】:

  • 您正在将文本从 edittext 解析为整数。但是如果用户没有输入任何内容或输入字符串。那么你的解析失败了。这就是为什么你需要一个 try catch 块。
  • 但是...整数
  • 你能解释一下你的问题吗?
【解决方案2】:

将 int 与 double 进行比较是有效的 - 它会将 int 提升为 在执行比较之前加倍。 您只需要@deepak 提到的try catch .. 您也可以尝试为您的 EditText 分配一个默认字符串(可能是“0”)值。

【讨论】:

    【解决方案3】:

    在你们的帮助下我弄明白了,非常感谢,现在这是代码:

    公共类 ABG 扩展 Activity { @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.abg );

            }
        String phStatus;
    
        @Override
        public String ph ( String phStatus )
            {
                EditText phET = (EditText) findViewById ( R.id.phEditText );
                try
                    {
                        double phEntered = Double.parseDouble ( phET.getText ( ).toString ( ) );
                        if ( phEntered < 7.35 )
                            {
                                phStatus = "Acidosis";
                            }
                        else if ( phEntered > 7.45 )
                            {
                                phStatus = "Alkalosis";
                            }
                        else
                            {
                                phStatus = "Normal acid-base balance";
                            }
    
                    }
                catch (Exception e)
                    {
                        // exception handle here
                    }
                return phStatus;
            }
    
    
    
        @Override
        public void result ( View v )
            {
                // TODO Auto-generated method stub
    
                String resultMSG = "This is " + ph ( phStatus );
    
                TextView resultTextView = (TextView) findViewById ( R.id.resultTextView );
                resultTextView.setText ( resultMSG );
            }    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 2013-02-26
      相关资源
      最近更新 更多