//要求是进行个位数的加减乘除,但是我敲的好奇怪。请帮忙挑出毛病。谢谢
import java.io.*;public class jisuanji{
    public static void main(String[] args) throws IOException{
    int bytes = 0; int a,b,c=0;
     byte buf[] = new byte[3]; buf[0]='0';
     while(buf[0]!='e'){
System.out.print("\n程序提示:请输入一位数算术表达式…\n用户输入:");
bytes = System.in.read(buf,0,3); 
a=(buf[0]-48);b=(buf[2]-48); if(buf[1]=='+') c=a+b;
if(buf[1]=='-') c=a-b;
if(buf[1]=='*') c=a*b;
if(buf[1]=='/') c=a/b; System.out.print("程序返回:");
String inStr = new String(buf,0,bytes);
if(buf[0]!='e') System.out.print(inStr+"="+c);
else System.out.print("退出系统");
}
    }
}代码在执行完 System.out.print("\n程序提示:请输入一位数算术表达式…\n用户输入:");
为什么会直接跳到 if(buf[0]!='e') System.out.print(inStr+"="+c);
望指教祝各位
身体健康
幸福快乐

解决方案 »

  1.   

    看上面一点
    while(buf[0]!='e'){
    当buf[0]!='e'为true的时候才能进入这个while循环
    在这个循环里有if(buf[0]!='e')这个语句 并且在这个语句之前你没有对buf[0]进行更改 所以会进到这个if
      

  2.   


    //lz的问题我没有遇到,代码稍微调整了一下,仅供参考import java.io.IOException;public class jisuanji
    {
    public static void main(String[] args) throws IOException
    {
    int bytes = 0; int a,b,c=0;
    byte buf[] = new byte[3]; buf[0]='0';

    //while(buf[0]!='e'){
    while(true)
    {
    System.out.print("\n程序提示:请输入一位数算术表达式…\n用户输入:");
    bytes = System.in.read(buf,0,3); 

    // 
    if(buf[0]=='e') 
    {
    System.out.print("退出系统");
    return;
    }

    a=(buf[0]-48);b=(buf[2]-48);

    if(buf[1]=='+') c=a+b;
    if(buf[1]=='-') c=a-b;
    if(buf[1]=='*') c=a*b;
    if(buf[1]=='/') c=a/b;

    System.out.print("程序返回:");
    String inStr = new String(buf,0,bytes);

    //if(buf[0]!='e') System.out.print(inStr+"="+c);
    //else System.out.print("退出系统");
    System.out.print(inStr+"="+c);
    System.in.skip(bytes);//可能我的键盘有问题,回车后,感觉输了两次,所以自己加了这个,不知是否恰当
    }
      }
    }
      

  3.   


    这个不算正常啊。你看看你写的第六行
    用户输入:的后面应该执行 bytes = System.in.read(buf,0,3);  
    不过它跳过了
      

  4.   

    原因很简单 输入1+2实际上是输入了4个字符"1+2回车"
    你第一次获取前3个字符1+2,第2次因为还有个回车,系统就会读取这个回车
    打印出 
    回车
    =3

    这个3是上一次计算的结果,因为回车不在判断条件中,所以c的值不会变
    import java.io.*;public class jisuanji {
    public static void main(String[] args) throws IOException {
    int bytes = 0;
    int a, b, c = 0;
    byte buf[] = new byte[4];//改成4
    buf[0] = '0';
    while (buf[0] != 'e') {
    System.out.print("\n程序提示:请输入一位数算术表达式…\n用户输入:");
    bytes = System.in.read(buf, 0, 4);//改成4
    if (buf[0] == 'e'){
    System.out.print("退出系统");
    break;
    }
    a = (buf[0] - 48);
    b = (buf[2] - 48); if (buf[1] == '+')
    c = a + b;
    else if (buf[1] == '-')
    c = a - b;
    else if (buf[1] == '*')
    c = a * b;
    else if (buf[1] == '/')
    c = a / b;
    System.out.print("程序返回:");
    String inStr = new String(buf, 0, bytes - 1);
    System.out.print(inStr + "=" + c);
    }
    }
    }
      

  5.   

    package ptu;import java.util.Scanner;public class Text { /**
     * 更新会员积分
     */
    public static void main(String[] args) {}
    }