我接受来自用户的号码<html>
<html lang="en">
<head>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript"
src="http://bioportal.bioontology.org/javascripts/widgets/form_complete.js"></script>
<meta charset="utf-8">
<title> NCBO Widget tester </title>
</head>
<body>
<body style="background-color:3a64a8">
<h1> NCBO Widget Tester </h1>
<p>Term Selection in a field</p>
<form action="/action_page.php">
Term tagger:<br>
<input type="text" name="term" class="bp_form_complete-all-name" size="100"/><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
,其长度为originally_entered_number_inString
位数。现在,如果该数字为正数,则按升序打印该数字。如果是负数,则下降。我得到了积极的一面,但负面的部分是我被困住的地方 - 它以降序显示负数,但旁边有一个 -1 。
示例:用户输入n
。因此该数字中有6位数字且为正数,因此提升 - 结果:654568
。但是,如果我输入455668
,则输出-584669
如果您看到,结果有效,只是它将连字符的值( - (减号))设为{{1} }, 或者其他的东西。你能帮帮我吗?
以下是代码:
986654-1
此外,它将减号计为数字。
提前致谢。
答案 0 :(得分:1)
string value = Console.ReadLine();
var negative = value.StartsWith("-");
var newValue = value.Replace("-", string.Empty);
var numbers = newValue
.Select(c => (int)char.GetNumericValue(c))
.ToArray();
Array.Sort(numbers);
if (negative) Array.Reverse(numbers);
foreach (var item in numbers){
Console.Write(item);
}
答案 1 :(得分:1)
负数不仅仅是一个“包含减号”的数字(12.0E-1是正数),但它是一个小于0的数字。我建议你想出一个更直接的逻辑你的算法。
一个可能是这样的:首先将输入字符串复制到整数变量
中int intNumber = int.Parse(inputNumber);
检查输入数字是否为负数
bool isNegative = (intNumber < 0);
然后取其绝对值(这只是没有符号的数字)
int absNumber = Math.Abs(intNumber);
并将数字放入整数数组
int[] intArray = absNumber.ToString().Select(digit=>int.Parse(digit.ToString())).ToArray();
现在你可以轻松排序:
int[] sortedArray = Array.Sort(intArray);
if (isNegative)
sortedArray = Array.Reverse(sortedArray);
答案 2 :(得分:0)
如果它小于0,则为entered_number_inInt
,因此您不会将'-'
解析为-1
(int)char.GetNumericValue('-') == -1
其他解决方案是使用'-'
替换字符串中的''
。