各位大侠好,小弟虚心请教,看书看到循环了,都理解,因为本身有C基础。以下代码是我一边想,一边敲,敲不出来就看一下书,然后继续敲的,因为书上的代码对随机产生的题目答对多少道题目那块,统计累加貌似不起作用,然后我自己加的 if模块,如下:
if (number1-number2 == answer){
correctcount++;
}
然后在打印语句输出。这样妥当不?  我不懂的地方,声明 String output =""; 后面那句output是什么意思呀?  我看书好慢,而且是自己一个个例子去敲,自己去验证。是不是学习方法错了?谢谢大侠们的指导。我从不看API,英文看不会。import java.util.*;
public class SubtrationQuizLoop {
public static void main(String[] args) {
final int NUMBER_QUESTIONS = 5;
int correctcount = 0;
int count = 0 ;
long startTime = System.currentTimeMillis();
String output = " ";
System.out.print("请输入一个数字:");
Scanner input = new Scanner(System.in);
while (count < NUMBER_QUESTIONS){
int number1 = (int)(Math.random() * 10);
int number2 = (int)(Math.random() * 10);
if (number1 < number2){
int temp = number1;
number1 = number2;
number2 = temp;
}
System.out.print("\n题目"+number1+"-"+number2+"="+"?");
int answer = input.nextInt();
if(answer == (number1 - number2)){
System.out.print("答案正确");
}else{
System.out.print("你回答错误!"+number1+"-"+number2+"的结果是:"+" "+(number1-number2));
}
count++;
if (number1-number2 == answer){
correctcount++;
}
output += "\n"+number1+"-"+number2+"="+answer+((number1 - number2 ==answer)? "正确":"错误");


}
long endTime = System.currentTimeMillis();
long testTime = endTime - startTime;
        System.out.print("\n答对的是:"+correctcount+" "+"条"+"\n共用时"+testTime / 1000 +"秒"+output);
}}

解决方案 »

  1.   

     String output ="";
    这是声明output为字符串 并 赋值为空。
    output += "\n"+number1+"-"+number2+"="+answer+((number1 - number2 ==answer)? "正确":"错误");这个是一个三目运算符 至于output += ...就是跟C里面的一样撒 不过我觉得这样写不好因为String不是动态添加 这代码里面的方式会分配很多String对象 空间浪费。
      

  2.   

    这样学习方式很好,学程序就是要敲代码,只有不停地敲才会发现自己所不知道的错误,对每个点的理解才是最深刻的,等你敲了一定的积累之后,学后面的内容时就有种理所当然的感觉,绝对比那些一开始只看而不敲代码的快。你的问题没错,必须要加上一个correctCount++表达,不然如何实现.不过你不必再写一个if语句,直接加在原来的if语句判断里就可以了。
    output是每次循环都把结果加到output这个字符串里,最后输出来。
      

  3.   


    早上好。 额,声明output给个空间,每次循环都把结果添加到output,这个output空间长度是多少? 额
      

  4.   


    OK啦,我已经把correctCount++加到判断正确模块里,然后就累加。 额,为什么我写的时候,脑子会在后尾另加个if独自累加呢?如何克服这种思维?哎,感觉有点笨。  
      

  5.   

    总喜欢贴大片代码。
    output只是声明,后面用来存储要打印的语句
    output += "\n"+number1+"-"+number2+"="+answer+((number1 - number2 ==answer)? "正确":"错误");不过一般这么多字符串相加都用StringBuffer()。
    看不懂英文API,不是还有中文API吗?下一个中文的吧,API在你未来的几年里还很重要。如果你继续还干这行的话。
      

  6.   

    别的我不说先了,LZ,我建议 你和视频一起学比较快点,javaSE是基础,都要学,要踏实的学···
    多敲代码是对,如果单纯看书很难入门的,java很多都和C不一样的。
      

  7.   

    你看一下吧!!
    import java.util.*;
    public class SubtrationQuizLoop
    {
    public static void main(String[] args) {
    final int NUMBER_QUESTIONS = 5;//所做题的数目
    int correctcount = 0;//统计正确的数目
    int count = 0 ; 
    long startTime = System.currentTimeMillis();//用于记录开始的时间
    String output = "";//定义了一个String 类型的变量output,里面没有存放任何数据
    System.out.print("请输入一个数字:");//输入一个答案
    Scanner input = new Scanner(System.in);
    while (count < NUMBER_QUESTIONS){
    int number1 = (int)(Math.random() * 10);//随机产生两个数进行运算
    int number2 = (int)(Math.random() * 10);
    if (number1 < number2) //判断两个数的大小
    {
    int temp = number1; //如果后一个大于前一个数,交换位置
    number1 = number2;
    number2 = temp;
    }
    System.out.print("\n题目"+number1+"-"+number2+"="+"?");//进行减法运算
    int answer = input.nextInt();
    if(answer == (number1 - number2))//如果计算正确
    {
    System.out.print("答案正确");
    }else{
    System.out.print("你回答错误!"+number1+"-"+number2+"的结果是:"+" "+(number1-number2));//统计真确的数目
    }
    count++;
    if (number1-number2 == answer){
    correctcount++;
    }
    output += "\n"+number1+"-"+number2+"="+answer+((number1 - number2 ==answer)? "正确":"错误");//如果错误
    }
    long endTime = System.currentTimeMillis();//结束的时间
    long testTime = endTime - startTime; //结束的时间减去开始的时间等于用的时间
            System.out.print("\n答对的是:"+correctcount+" "+"条"+"\n共用时"+testTime / 1000 +"秒"+output);
    }}