我希望得到用户输入上的所有奇数和偶数,然后得到所有奇数和偶数差的乘积。例如:输入字符串:dfgi456456 =';] = 34521。输出应显示用户输入中的所有奇数和偶数以及产品和差异,在这种情况下,ODD编号为:5,3,1偶数为: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();
}
}
答案 0 :(得分:1)
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; } }
答案 1 :(得分:0)
以下是从字符串中提取不同数字的代码段:
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();
从该列表中,您可以遍历数字以获得您的产品/差异/无论如何。