0
/*OridinalForm.java
 * ----------------
 * This program displays the the number with their suffix.
 */
import acm.program.*;
public class OridinalForm extends ConsoleProgram {
    private static final long serialVersionUID = 1L;

    public void run(){
        while(true){
         int no=readInt("Please enter the numberand press 0 to stop:");
         if(no==0){
             break;
         }
             println(oridinalForm(no));
         }
     }
         private String oridinalForm(int nos){
         String result="";
         switch(nos){
         case '1':result=nos+"1st";
         case '2':result=nos+"2nd";
         case '3':result=nos+"3rd";
         default:
    1        if(nos.charAt(nos.length()-1)=1){
                 result=nos+"1st";
             }
    2        if(nos.charAt(nos.length()-1)=2){
                 result=nos+"2nd";
             }
    3        if(nos.charAt(nos.length()-1)=3){
                 result=nos+"3rd";
             }
             else result=nos+"th";
         }
         return result;
     }
  }

the code is to explain the result for the no with different conditions. The error is on line:1,2,3. PLease explain me the debugging method. Im little unknown about that method.

4

4 回答 4

4

这里,nos是一个int. 但是在您的switch声明中,您将其与chars:进行比较,'1'可以int隐式转换为用于比较,但这是0x31, 或的 ASCII 值49switch在您的陈述中使用实际数字。

您不能在原始int类型上调用方法。要获取特定数字,您可以将其转换为Stringwith String.valueOf然后调用charAt它。

接下来,在这一行(以及其他喜欢的行)中,

if(nos.charAt(nos.length()-1)=1){

=运算符是java中的赋值运算符。==改为用于比较值int。这是关于Java 运算符的教程。

于 2013-06-27T18:59:51.607 回答
2
 private String oridinalForm(int nos){
     //                      ^^^ 
        if(nos.charAt(nos.length()-1)=1){
     //       ^          ^           ^
             result=nos+"1st";
         }
        if(nos.charAt(nos.length()-1)=2){
             result=nos+"2nd";
         }
        if(nos.charAt(nos.length()-1)=3){
             result=nos+"3rd";
         }
         else result=nos+"th";
     }
     return result;
 }

nos是一个int。它没有charAtorlength方法。事实上,它是一个原始的,它不能有任何方法。

此外,正如其他答案中提到的, =用于分配,==用于比较(这是您想要的)。

于 2013-06-27T19:01:44.267 回答
0

nos是一个 int,它是一个原始类型,并且不会附加任何方法。我认为你的if陈述应该是if(result.charAt(result.length()-1) == 1),等等。

于 2013-06-27T19:00:06.407 回答
0

如果您查看每个 if 语句,您会发现您实际上是在为字符串末尾的字符分配一个值。if(nos.charAt(nos.length()-1)=1){应该是 if(nos.charAt(nos.length()-1)==1){

于 2013-06-27T19:00:14.623 回答