A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.Scanner;
import java.util.Random;
class ZuoYe
{
        public static void main(String[] args)
        {
                //Scanner scann =new Scanner(System.in);
                //int i = scann.nextInt();
                getSymboleAndShu();
        }
        public static void getSymboleAndShu(){
                int cj = 0;
                for (int i = 1; i <= 10 ; i++) {
               
                        char[] arr = {'+' , '-', '*' , '/'};
                        Random r = new Random();
                        int i1 = r.nextInt(30);
                        int i2 = r.nextInt(4);
                        int i3 = r.nextInt(10);
                        System.out.print(i1+" "+arr[i2]+" "+i3+" = ");

                        Scanner scann = new Scanner(System.in) ;
                        int i4 = scann.nextInt();

                        if (i1 (i2) i3 == i4) {
                                cj+=10;
                        }
                }
                System.out.println("您的最终成绩是"+cj+"分");
                       
        }

}

为什么我这个代码编译会出错呢?求解!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
每次编译都说这个地方不对!求高手给出正确的答案!
回复 使用道具 举报
本帖最后由 张综 于 2012-11-5 16:23 编辑

import java.util.Random;
import java.util.Scanner;
class SiZeYunSuan
{
public static void YunSuanFu(){
Scanner scan=new Scanner(System.in);
        System.out.print("请输入要做的题数:");
                int TiShu=scan.nextInt();
                int sco=100/TiShu;
                int score=0;
        
        for (int j = 1; j <=TiShu ; j++) {
                Random r=new Random();
                int a=r.nextInt(100);
                //System.out.println(a);
                int b = r.nextInt(100);
                //System.out.println(b);
                int i=r.nextInt(4);
                //System.out.println(i);
                char s;
                int[] arr=new int[]{'+','-','*','/'};
                s=(char)arr;
               
                System.out.println("请计算第"+j+"道题数");
                System.out.println("请计算:"+a+" "+s+" "+b+"=");
                int sum1=scan.nextInt();
                int sum=0;
               
                switch(i){
                        case 0:sum=a+b;break;
                        case 1:sum=a-b;break;
                        case 2:sum=a*b;break;
                        case 3:sum=a/b;break;
                }
                //System.out.println(s);
                //System.out.println(sum);
                if (sum==sum1) {
                        score+=100/TiShu;
               
                        System.out.println("恭喜,答对了!加"+sco+"分"+"\n");
                }
                else{
                System.out.println("很不幸,您回答错了!不加分"+"\n");
                }

        }
        System.out.println("您本次答题总共得分为"+score);
        
        }



        public static void main(String[] args)
        {
                YunSuanFu();
        
}



我的代码之所以有这么多的输出语句是因为之前调试的时候用的。请记住一句话。代码不是敲出来的。而是调试出来的。出了错误,慢慢调试,试着解决。





评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
if (i1 (i2) i3 == i4)  这聚会是起什么作用的
回复 使用道具 举报
本帖最后由 朱宏青 于 2012-11-5 16:50 编辑

我测试一下 请捎等

首先我不懂
  1. int i2 = r.nextInt(4);
复制代码
  1. if (i1 (i2) i3 == i4)
复制代码
这段代码到底产生了什么作用;

我后来想了下,估计你可能搞错了一个地方:

你想用i2来装载arr数组里的符号进行运算 对不对?但是你上面写的明显是错的 这是一点。

然后是 假设你没有写错,你认为i1+i3 = ;这句话跟i1arr[0]i3= ;这两段代码功能是相同? 这是大错。。

字符"+" 跟算术运算符+完全是两码事,不要混在一起。

最后要说的是,假设你以上都没错,那么还有一个漏洞需要调整。20/8= ? 这个问号应该是多少呢?按照整型判断是2 因为会忽略后面的小数,但是实际结果应该是:2.5.

希望你能了解。。。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
System.out.print(i1+" "+arr[i2]+" "+i3+" = ");

你程序的关键地方在这个地方,将+-*/定义在了一个字符数组中,那么你读取的就是一个字符了,而不是运算符,自然不能进行加减运算了
  建议你使用switch 来做,这样就很好的解决了这个问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马