[英]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();
}
}
index[i]
。 char
类型的。 为了进行算术测试和计算,您应该将它们转换为int
值。 Character.getNumericValue(input[i])
可能会有所帮助。 您还应该测试它是否为负数,因为它为非数字字符返回负数。 prodOdd
初始值为0
。 因此,所有的乘法都浪费了。 您应该使用1
初始化此变量。 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.