zoukankan      html  css  js  c++  java
  • 我的个人项目作业错误及解决办法

    一、控制台输入

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

    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);
    						
    					}
    
  • 相关阅读:
    Storm应用系列之——集成Kafka
    Storm常见模式——分布式RPC
    Storm常见模式——流聚合
    博客迁移
    设计模式学习笔记
    JStorm模型设计
    MySQL学习笔记
    JAVA学习笔记
    JavaScript学习笔记
    用ACE来写代码
  • 原文地址:https://www.cnblogs.com/caoying993/p/8904184.html
Copyright © 2011-2022 走看看