繁体   English   中英

打印使用toCharArray()输入的所有奇数和偶数

[英]Print all odd and even numbers input using toCharArray()

我想获取用户输入中的所有奇数和偶数,然后获取所有奇数和偶数差的乘积。 例如:输入一个字符串:dfgi456456 =';] = 34521。 输出应在用户输入中显示所有奇数和偶数以及乘积和差,在这种情况下,ODD数为:5,3,1 EVEN数为:4,6,2 ODD数的乘积(乘积的答案): 15个偶数的差(减法的答案):-4。 请在下面查看我的代码。 任何帮助,将不胜感激。 谢谢。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

    if (request.getParameter("stringToArray") != null) {
        char[] input = request.getParameter("stringToArray").toCharArray();
        int diffEven;
        int prodOdd;
        int i;
        for(i = 0; i <= input.length; i++){
             if( i % 2 == 0){
                 diffEven -= input;
             }
             else{
                 prodOdd *= input;
             }
        }
        out.print("<h4>All ODD numbers are: </h4>" +i);
        out.print("<h4>All EVEN numbers are: </h4>" +i);
        out.print("<h4>Product of all ODD numbers: </h4>" +prodOdd);
        out.print("<h4>Difference of all EVEN numbers: </h4>" +diffEven);
    }
    out.close();

}

}

  1. 访问数组元素的正确方法是index[i]
  2. 数组元素是char类型的。 为了进行算术测试和计算,您应该将它们转换为int值。 Character.getNumericValue(input[i])可能会有所帮助。 您还应该测试它是否为负数,因为它为非数字字符返回负数。
  3. 对于乘法部分, prodOdd初始值为0 因此,所有的乘法都浪费了。 您应该使用1初始化此变量。
  4. 对于差异部分,您希望不减去第一个数字。 因此,您应该有一个标志或其他东西来检测输入中遇到的第一位数字。 这样的事情可能会有所帮助:
boolean firstNum = true; 
    ... 
    if ( ... ) {
        // Even numbers
        if (firstNum)
        {
            diffEven += digitVal;
            firstNum = false;
        }
        else 
        {
            diffEven -= digitVal;
        } 
    }

下面是一个代码片段,用于从字符串中提取不同的数字:

static IList<int> ExtractNumbers(string data)
{
    var result = string.Empty;
    var regex = new Regex(@"\d+", RegexOptions.None);
    var matches = regex.Matches(data);

    foreach (Match match in matches)
    {
        result += match.Value;
    }

    return result
        .ToCharArray()
        .Distinct()
        .Select(x => int.Parse(x.ToString()))
        .ToList();
}

从那里,您应该可以使用Linq来获取您的奇/偶数:

var numberData = "dfgi456456=';]=34521";
var numbers = ExtractNumbers(numberData);
var oddNumbers = numbers.Where(x => x % 2 == 0).ToList();
var evenNumbers = numbers.Where(x => x % 2 != 0).ToList();

从该列表中,您可以遍历数字以获取您的产品/差异/其他信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM