• 我的个人项目作业错误及解决办法


    一、控制台输入

    错误——第一次测评时我的问题是控制台输入,代码如下:

    Scanner s = new Scanner(System.in);
    		//通过new Scanner(System.in)创建一个Scanner,
    		//控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。
    		System.out.println("请输入要生成四则运算式的个数(0~1000):");
    		OperationalFormula = s.nextInt();//从操作台输入运算式的个数
    		System.out.println("请输入每个运算式包含的的运算符的个数(3~5):");
    		operator = s.nextInt();//从操作台输入运算符的个数
    

     修改——而这样无法进行命令行输出,所以第一次测评后,我加了一个try—catch,代码如下:

    try{
    			OperationalFormula=Integer.parseInt(args[0]);
    			if(OperationalFormula>1002||OperationalFormula<0){
    			    System.out.println("数值不符合要求,请重输");
    			}
    		}catch(Exception e){
    			System.out.println("数值不符合要求,请重输1");
    		}
    

     这样修改后,命令行可以输出,但是必须加上utf—8,换行后输入100,再换行才可以。原因是有用Scanner输入的中文提示。

    二、编译错误,不支持utf—8和gbk编译

    错误——第二次测评时我的问题是编译错误,不支持utf—8和gbk编译。找了大佬宇欣发现是测评程序必须是输入Java Main 100,然后程序运行结果输出到result文件里。

    修改——把Scanner输入的中文提示删掉,Main文件改为代码如下:

    import java.io.IOException;
    
    
    public class Main {
    	public static void main(String args[]) {
    		String[] questionList = new String[1001];//开了一个0~1001的数组,即长度为1001
    		int OperationalFormula=0;//定义了一个运算式个数
    		try {
                     OperationalFormula = Integer.parseInt(args[0]);// 输入出题的运算式个数
                      } catch (Exception e) {
                       System.out.println("请输入正整数作为参数");
                      }
    		if(OperationalFormula>0){
    		Lib.makeQuestions(questionList, OperationalFormula);
    		//调用Lib中的makeQuestions函数
    		try {
    			Lib.Filefile(questionList, OperationalFormula);
    			//调用Lib中的文件将结果输出到path里面
    			
    		}
    		catch(IOException ioe) {
    			System.out.println("文件生成错误");
            }//将makeQuestions中的OperationalFormula个运算式和结果输出到path文件里
    }
    		
    	}
    }
    

     这样修改后,即可成功符合要求命令行输出了。

    三、偶尔出现超大数

    错误——运行时偶尔会出现超级大的乘数。

    修改——找了大佬晓真,多运行几次,排查后发现是大数都是出现在乘号后面。后来发现我的乘号后面的数的生成条件没有必要,直接注释掉就没有这种情况了,代码如下:

    			     else if( QuestionOfOp[j] == '*') {
    //						QuestionOfNum[j] = (int)(Math.random()*20);
    //						QuestionOfNum[j+1] = (int)(Math.random()*100/QuestionOfNum[j]);
    					}
    

     原来的代码:

     else if( QuestionOfOp[j] == '*') {
    						QuestionOfNum[j] = (int)(Math.random()*20);
    						QuestionOfNum[j+1] = (int)(Math.random()*100/QuestionOfNum[j]);
    					}
    

    四、偶尔出现负数

    错误——运行时偶尔会出现负数。

    修改——找了大佬晓真,多运行几次,排查后发现是负数都是出现在减号后面。后来发现我的减号后面的数的生成条件有误,改后的代码如下:

    if( QuestionOfOp[j] == '-') {
    						String dis = "" + QuestionOfNum[0];
    						for(int k=0; k<j; k++)
    							dis = dis +  QuestionOfOp[k] + QuestionOfNum[k+1];
    						int Num = calQuestion(dis);
    						if(Num<0){
    							flag = false;
    							break;
    						}
    						if(Num<=100){
    							QuestionOfNum[j+1] = (int)(Math.random()*Num);
    						}else{
    							QuestionOfNum[j+1] = (int)(Math.random()*100);
    						}
    					}
    

     原来的代码:

    if( QuestionOfOp[j] == '-') {
    						String dis = "" + QuestionOfNum[0];
    						for(int k=0; k<j; k++)
    							dis = dis +  QuestionOfOp[k] + QuestionOfNum[k+1];
    						int Num = calQuestion(dis);
    						
    							QuestionOfNum[j+1] = (int)(Math.random()*Num);
    						
    					}
    
  • 相关阅读:
    说起创业,朋友说要有100%的把握我们再去创业,如果没有100%需要80%,你咋看?
    创业很难,有没有人愿意分享自己一些创业的点子,想法,尽量详细一点?
    开了家店但生意不好,又转不出去,一直在亏钱,怎么办?
    现在创业什么行业比较好?
    有人说,现在创业的机会已经都错过了,现在创业一切都晚了,你怎么看?
    比特币会归零吗?
    如果你中了500万,一个才华横溢的人来向你融资300万创业,你会同意吗?
    王思聪创办的熊猫直播将于3月8日正式关站,这会是直播行业的落幕吗?
    请问大家觉得做什么生意本小利润大?
    前端常见跨域解决方案(全)
  • 原文地址:https://www.cnblogs.com/caoying993/p/8904184.html
Copyright © 2020-2023  润新知