当前位置: 首页 > 知识库问答 >
问题:

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

宋建本
2023-03-14

我想得到用户输入的所有奇数和偶数,然后得到所有奇数的乘积和偶数的差值。例如:输入一个字符串:dfgi456456=';]=34521。输出应该显示用户输入中的所有奇数和偶数以及乘积和差值,在这种情况下,奇数是:5,3,1偶数是:4,6,2奇数的PRODUCT(乘法答案):15偶数的DIFFERENCE(减法答案):-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();

}

}

共有2个答案

贺彬
2023-03-14

下面是从字符串中提取不同数字的代码片段:

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();

从该列表中,您可以迭代数字以获取您的产品/差异/任何内容。

尹兴生
2023-03-14
  1. 访问数组元素的正确方法是 index[i]。
  2. 数组元素是字符类型的。为了进行算术测试和计算,您应该将它们转换为 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;
        } 
    }
 类似资料:
  • 下面写的代码是正确的,但我想缩短这段代码。 用java编写一个程序,在单维数组中输入10个数字,并以所有偶数后面跟着所有奇数的方式排列它们。 我能把偶数和奇数安排在一个for循环中而不是两个for循环中吗?我使用双for循环将偶数和奇数转换为数组。请缩短代码。一个用于检查偶数的循环遍历,另一个用于检查奇数。

  • 嗨,这是我正在做的课程上的一个问题。。。 > 程序打印“键入数字”,直到用户键入数字-1。当用户键入数字1时,程序打印“谢谢,稍后再见!”!“并结束 程序应该打印用户输入的数字的总和(不带数字-1) 程序应该打印用户键入的数字(没有数字-1) 程序应该打印用户键入的数字的平均值(没有数字-1)。 5.程序应该打印用户键入的偶数和奇数的数量(没有数字-1)。 我已经完成了1-4,但完全停留在5。我确

  • 问题内容: 使用线程进行奇数打印,创建一个线程类,两个线程实例。 一个将打印奇数,而另一个将打印偶数。 我做了以下编码。但这涉及到死锁状态。有人可以解释一下原因吗? 输出: 奇数1偶数2 然后陷入僵局!!!!!! 谢谢你的帮助。 问题答案: 您正在等待并通知其他对象( 监视器 )。 这个想法是,你在做和做的时候可以打电话等待一个人做。 将您的方法更改为类似 和方法类似。 然后为提供一个对象: 输出

  • 正如标题所述,我一直在寻找创建一个程序,将循环在一个文本/输入文件(的数字),然后继续寻找平均奇数和偶数出现在该文件中。 我目前已经成功地创建了如下图所示的结果,能够找到奇数的平均值。然而,我似乎不明白如何能够得到偶数的平均值。 我试着关闭扫描仪,打开另一个扫描仪,再做一段时间,如果else像下面这样循环,并且几乎尝试了相反的方法,那么其他尝试获得偶数平均值的尝试结果是输出为NaN、0或有时停留在

  • 这就是我到目前为止所做的。我无法打印数组中奇数的总数以及该奇数的总和。 我已经尝试了所有方法来打印奇数,但我无法打印。当我运行程序时,它一直输出零。

  • 问题内容: 我正在尝试使用2个不同的线程交替打印奇数和偶数。我能够使用等待,通知和同步块来实现它,但是现在我想评估是否可以不使用等待,通知和同步来实现它。 以下是我拥有的代码,但无法正常工作: } 有任何想法吗? 根据Bruno的建议,我创建了另一个版本,该版本似乎效果更好: 问题答案: 代码未正确同步,这就是问题所在。 您的代码中允许以下执行顺序: 第一个线程看到,将其设置为并进入块。 第二个线