我有这个程序,我必须从表达式中取两个数字和符号:
**111*369**
但是在这里:
for(i=0; i<t; i++) {
while(w) {
if(ar1[i].charAt(j)=='+' || ar1[i].charAt(j)=='-' || ar1[i].charAt(j)=='*' || ar1[i].charAt(j)=='/') {
w = false;
}
else {
k = ar1[i].charAt(j);
a = a*10 + (long)(k-48);
}
}
程序永远不会进入if语句。它进入了一个无限循环。
那为什么不检查符号呢?
以下是包含输出的完整程序的链接:My Program
答案 0 :(得分:1)
你的while循环总是在条件中检查相同的字符,因为你永远不会增加<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/content24"
android:id="@+id/step19textView"
android:textSize="18dp"
android:textAlignment="center"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:layout_marginTop="32dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<LinearLayout
android:id="@+id/llParent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/step19textView"
android:layout_marginTop="50dp"
android:orientation="horizontal">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:id="@+id/step19button1"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:background="@drawable/button_border"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:id="@+id/step19button2"
android:layout_weight="1"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_alignTop="@+id/step19button1"
android:layout_toRightOf="@+id/step19button1"
android:layout_toEndOf="@+id/step19button1"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="1"
android:id="@+id/step19button3"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_alignBottom="@+id/step19button2"
android:layout_toRightOf="@+id/step19button2"
android:layout_toEndOf="@+id/step19button2"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:id="@+id/step19button4"
android:textSize="13dp"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:textColor="@android:color/white"
android:layout_alignBottom="@+id/step19button3"
android:layout_toRightOf="@+id/step19button3"
android:layout_toEndOf="@+id/step19button3"
android:background="@drawable/button_border_5"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:id="@+id/step19button5"
android:textSize="13dp"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_alignBottom="@+id/step19button4"
android:layout_toRightOf="@+id/step19button4"
android:layout_toEndOf="@+id/step19button4"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
android:id="@+id/step19button6"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:layout_alignBottom="@+id/step19button5"
android:layout_toRightOf="@+id/step19button5"
android:layout_toEndOf="@+id/step19button5"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
android:id="@+id/step19button7"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_weight="1"
android:layout_alignBottom="@+id/step19button6"
android:layout_toRightOf="@+id/step19button6"
android:layout_toEndOf="@+id/step19button6"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:layout_weight="1"
android:id="@+id/step19button8"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_alignBottom="@+id/step19button7"
android:layout_toRightOf="@+id/step19button7"
android:layout_toEndOf="@+id/step19button7"
android:background="@drawable/button_border"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:layout_weight="1"
android:id="@+id/step19button9"
android:textSize="13dp"
android:layout_marginLeft="3dp"
android:layout_alignBottom="@+id/step19button8"
android:layout_toRightOf="@+id/step19button8"
android:layout_toEndOf="@+id/step19button8"
android:background="@drawable/button_border"/>
</LinearLayout>
<EditText
android:layout_width="wrap_content"
android:layout_height="20dp"
android:id="@+id/step19editText"
android:paddingLeft="10dp"
android:layout_below="@+id/llParent"
android:layout_alignLeft="@+id/llParent"
android:layout_alignStart="@+id/llParent"
android:layout_marginTop="20dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="20dp"
android:id="@+id/step19editText2"
android:layout_alignTop="@+id/step19editText"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="20dp"
android:id="@+id/step19editText3"
android:paddingRight="10dp"
android:layout_alignTop="@+id/step19editText2"
android:layout_alignRight="@+id/llParent"
android:layout_alignEnd="@+id/llParent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content25"
android:id="@+id/step19textView2"
android:textSize="18dp"
android:paddingLeft="10dp"
android:layout_alignTop="@+id/step19textView4"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content26"
android:id="@+id/step19textView4"
android:textSize="18dp"
android:textAlignment="center"
android:layout_alignTop="@+id/step19textView5"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content27"
android:id="@+id/step19textView5"
android:textSize="18dp"
android:paddingRight="10dp"
android:layout_below="@+id/step19editText3"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Next "
android:textSize="18dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:id="@+id/step19nextbutton"
android:layout_marginTop="59dp"
android:textColor="@android:color/white"
android:background="@drawable/button_border_5"
android:layout_below="@+id/step19textView4"
android:layout_centerHorizontal="true" />
</RelativeLayout>
。因此,如果该字符不是运算符,则循环将永远不会终止。
您应该在每次迭代中增加j
,并注意不要将j
增加到最后一个索引j
之后:
ar1[i]
答案 1 :(得分:1)
查看您的while
声明:
while (w) {
if (ar1[i].charAt(j) == '+' || ar1[i].charAt(j) == '-' || ar1[i].charAt(j) == '*' || ar1[i].charAt(j) == '/') {
w = false;
} else {
k = ar1[i].charAt(j);
a = a * 10 + (long)(k - 48);
}
}
如果if
条件为false,则转到else
块。 else
块无需更改w
,也无需更改if
正在测试的内容,因此循环将永远持续。