黑马程序员技术交流社区

标题: 关于随机生成两个随机数和一个四则运算符,用户输出结果,计算机计算最后成绩! [打印本页]

作者: 7℃洋    时间: 2012-11-5 15:12
标题: 关于随机生成两个随机数和一个四则运算符,用户输出结果,计算机计算最后成绩!
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+"分");
                       
        }

}

为什么我这个代码编译会出错呢?求解!
作者: 7℃洋    时间: 2012-11-5 15:12
每次编译都说这个地方不对!求高手给出正确的答案!
作者: 张综    时间: 2012-11-5 16:21
本帖最后由 张综 于 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();
        
}



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






作者: 李贺晓    时间: 2012-11-5 16:28
if (i1 (i2) i3 == i4)  这聚会是起什么作用的
作者: 朱宏青    时间: 2012-11-5 16:36
本帖最后由 朱宏青 于 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.

希望你能了解。。。
作者: 程宏志    时间: 2012-11-27 23:04
System.out.print(i1+" "+arr[i2]+" "+i3+" = ");

你程序的关键地方在这个地方,将+-*/定义在了一个字符数组中,那么你读取的就是一个字符了,而不是运算符,自然不能进行加减运算了
  建议你使用switch 来做,这样就很好的解决了这个问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2