在Android上为前46个Fibonacci数字创建文本视图
到目前为止,我有这个,结果是一个空白屏幕。为了达到列出前46个斐波那契数的预期效果,我应该做些什么在Android上为前46个Fibonacci数字创建文本视图,android,textview,fibonacci,Android,Textview,Fibonacci,到目前为止,我有这个,结果是一个空白屏幕。为了达到列出前46个斐波那契数的预期效果,我应该做些什么 TextView fibNum; static int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public stat
TextView fibNum;
static int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public static int fib(int n) {
int prev1=0, prev2=1;
for( i=0; i<n; i++) {
int savePrev1 = prev1;
prev1 = prev2;
prev2 = savePrev1 + prev2;
}
return prev1;
}
public void main(String[] args) {
for (int i=0; i<=46; i++)
fibNum = new TextView(this);
fibNum.setText(String.valueOf(fib(i)+", "));
}
}
TextView-fibNum;
静态int i=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共静态整数fib(整数n){
int prev1=0,prev2=1;
对于(i=0;i首先,仅仅创建一个TextView
并不能使其成为显示的视图层次结构的一部分。其次,Android永远不会调用你的main
方法。第三,我甚至看不到你的代码是如何编译的;main
中的循环只包含对fibNum
的赋值,因此在调用setText
时>,变量i
甚至不在范围内
抛开所有这些不谈,假设您的activity\u main.xml
布局文件中已经有一个TextView
,其中id@+id/text
用于显示数字。我建议这样做:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView) findViewById(R.id.text);
text.setText(getFib(46));
}
public static int fib(int n) {
int prev1 = 0, prev2 = 1;
for(int i = 0; i < n; i++) {
int savePrev1 = prev1;
prev1 = prev2;
prev2 = savePrev1 + prev2;
}
return prev1;
}
public static String getFib(int n) {
StringBuilder sb = new StringBuilder(fib(0));
for (int i = 1; i < n; ++i) {
sb.append(", ");
sb.append(fib(i));
}
return sb.toString();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text=(TextView)findViewById(R.id.text);
text.setText(getFib(46));
}
公共静态整数fib(整数n){
int prev1=0,prev2=1;
对于(int i=0;i
这假设计算46个斐波那契数不会花费过多的时间。如果需要,则必须将计算转移到工作线程(使用.您没有调用“main”方法。编程Android应用程序与您可能知道的普通java不同。main方法一开始不会被调用。此外,您没有将TextView添加到布局中2,Android没有使用main()函数启动,您可以将main()的代码在onCreate.Second的末尾,您需要将您创建的文本视图添加到布局中,以便显示。@GrisHu-我已经回滚了您的编辑。这些语句的原始顺序是正确的,因为sb
已经包含fib(0)的文本
输入循环之前。您的编辑将导致前两个数字在没有分隔符的情况下连接在一起,并且还会在序列的末尾放置一个额外的分隔符。