android中的Factorial程序

时间:2013-06-22 09:45:39

标签: android

嘿伙计我知道有很多java程序用于数字的阶乘...但我面临着android的问题。以下是我的代码....谢谢

package com.droidacid.apticalc.aptitudes;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.droidacid.apticalc.R;

public class AptiFactorial extends Activity implements android.view.View.OnClickListener{
EditText number;
TextView answer;
Button calculate;

long factorial = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.apti_factorial);
    initialize();
    calcFactorial();
}
private void initialize() {
    number = (EditText) findViewById(R.id.et_apti_number);
    answer = (TextView) findViewById(R.id.tv_apti_answer);
    calculate = (Button) findViewById(R.id.b_apti_calc);
    calculate.setOnClickListener(this);
}
private void calcFactorial() {
    if (number.getText().toString().equals("")) number.setText("0");
    int num = Integer.parseInt(number.getText().toString());
    for(int i = 1; i<=num; i++){
        factorial = i * factorial;
    }

}


@Override
public void onClick(View v) {
    calcFactorial();
    answer.setText("Factorial of " + number.getText().toString() + " is : " +     factorial);

}

}

这是我的代码,我需要知道如何设置提示而不是0,但如果我删除if (number.getText().toString().equals("")) number.setText("0");

然后得到NullPointerException ... 也是在第一次去正确计算,但如果我再次计算然后得到错误的答案。我认为有些循环问题因为我直接使用了factorial的值。

请帮助谢谢

5 个答案:

答案 0 :(得分:1)

忘记所有equal内容,涵盖所有基础并按照以下方式执行:

package com.droidacid.apticalc.aptitudes;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.droidacid.apticalc.R;

public class AptiFactorial extends Activity implements android.view.View.OnClickListener{
EditText number;
TextView answer;
Button calculate;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.apti_factorial);
    initialize();
}

private void initialize() {
    number = (EditText) findViewById(R.id.et_apti_number);
    number.setHint("Enter number to be factorialized :P")
    answer = (TextView) findViewById(R.id.tv_apti_answer);
    calculate = (Button) findViewById(R.id.b_apti_calc);
    calculate.setOnClickListener(this);
}

private long calcFactorial() {

    long factorial = 1;
    try {
        factorial = Long.parseLong(number.getText().toString());
        for(int i=factorial-1; i>0; i--){
            factorial = i * factorial;
        }
    } catch (NumberFormatException e) {
        Toast.makeText(this, "Incorrect Input", Toast.LENGTH_LONG).show();
    } finally {}

    return factorial;
}

@Override
public void onClick(View v) {
    answer.setText("Factorial of " + number.getText().toString() + " is : " + calcFactorial());
}

答案 1 :(得分:0)

做点什么。

private void calcFactorial() {
    int num = 0;
    if (!number.getText().toString().equals(""))
          num = Integer.parseInt(number.getText().toString());
    for(int i = 1; i<=num; i++){
        factorial = i * factorial;
    }

}

答案 2 :(得分:0)

 Rather than using
(number.getText().toString().equals("")) number.setText("0");
Use
(number.getText().length==0) number.setText("0");

答案 3 :(得分:0)

** first go its calculating correctly but If I calculate again then getting wrong answer**

试试这个

 private void calcFactorial() {
    factorial = 1;///Check out the line..
        int num = 0;
        if (!number.getText().toString().equals(""))
              num = Integer.parseInt(number.getText().toString());
        for(int i = 1; i<=num; i++){
            factorial = i * factorial;
        }

    }

你需要确保将变量factorial重新初始化为1 ..以获得下一个数字的阶乘..

答案 4 :(得分:0)

$prev=0;
while($rows=$result->fetch_assoc()) {
   if ($rows['postid']!=$prev) {
      $prev || close_table();
      open_table();
      $prev=$rows['postid'];
   }
   output_row($rows);
}
close_table();