我写了一个简单的程序来查找字符串
的最小排列,它在字典上比当前的大。但是,编译器发出错误
< code >错误CS1003语法错误,应为“:*”。
我使用VS 2015(更新3),每当我编译该程序(这在语法上似乎是正确的)时,我都会遇到上述错误。
该程序在语法上是否有任何错误?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Program
{
static void Main(string[] args)
{
const string a = "ABCDEFG";
//var u = FFG(a);
//var t = int.Parse(Console.ReadLine());
//for (int i = 0; i < t; i++)
//{
// Console.WriteLine(FFG(Console.ReadLine()));
//}
string u2 = a;
string u = a;
do
{
//***The follownig line meets Error***
Console.WriteLine(u + $"{String.Compare(u, u2) > 0 ? true:false}");
} while ((u = FFG(u)) != "no answer");
Console.ReadLine();
}
static string FFG(string ss)
{
var s = ss.ToCharArray();
int i = s.Length - 1;
while (i >= 1 && s[i] <= s[(i--) - 1])
{ }
if (i == 0 && s[0] >= s[1])
return "no answer";
int j = s.Length - 1;
while (s[i] >= s[(j--)])
{ }
j++;
swap(s, i, j);
int t = i + 1, tt = s.Length - 1;
if (j - i >= 2)
while (t < tt)
{
//if (t == j)
// t++;
//if (tt == j)
// tt--;
swap(s, t, tt);
t++; tt--;
}
return new string(s);
}
static void swap<T>(T[] array, int i, int j)
{
T k = array[i];
array[i] = array[j]; array[j] = k;
}
}
我想Cᴏʀʏ已经回答了你的问题。但是万一我想给你一个不同的。
尝试<code>字符串。格式</code>:
控制台。WriteLine("{0}{1}", u, String. Compare(u, u2)
希望有帮助!
这不是编译器错误。问题是您拥有的内插字符串格式:
$"{String.Compare(u, u2) > 0 ? true:false}"
条件表达式需要用括号括起来,因为其中包含:
。通常,:
后跟一个格式化表达式,在这种情况下没有。
请尝试使用以下方法:
$"{(String.Compare(u, u2) > 0 ? true:false)}"
来自MSDN(重点是我的):
您不需要在包含的插值表达式中引用引号字符,因为插值字符串表达式以$开头,并且编译器将包含的插值表达式作为平衡文本扫描,直到找到逗号、冒号或右花括号。出于同样的原因,最后一个示例使用括号允许条件表达式(p. age==1 ? "" : "s")位于插值表达式中,而无需冒号启动格式规范。
不管怎样,在我看来,在这里使用插值字符串是不必要的。字符串比较的结果可能对调试有用,所以我会将其移出字符串。此外,Consol. WriteLine
已经被重载以接受格式字符串和标记,因此我将您的控制台输出逻辑更改为:
do
{
var comparisonResult = string.Compare(u, u2) > 0;
Console.WriteLine("{0} {1}", u, comparisonResult);
} ...
您可以。如果您真的很关心外壳,也可以使用To低()
。
我想创建一个日期时间字符串,但添加CET/CEST,具体取决于是否夏时制。 因此,如果返回true,则附加“CEST”字符串,如果不是,则仅附加“CET”。 有没有简单/快捷的方法来做这件事?
现在的Rust资料,无论是Book还是RustByExample都没有统一而完全的介绍Rust的操作符。一个很重要的原因就是,Rust的操作符号和C++大部分都是一模一样的。 一元操作符 顾名思义,一元操作符是专门对一个Rust元素进行操纵的操作符,主要包括以下几个: -: 取负,专门用于数值类型。 *: 解引用。这是一个很有用的符号,和Deref(DerefMut)这个trait关联密切。 !:
问题内容: 嗨,我只是想知道为什么这段代码(至少对我来说)产生错误的结果。 好吧,我可能在这里错了 我猜想,如果paperType等于“ Bond”,则说明为“ Paper:Bond”,如果paperType不等于“ Bond”,则说明为“ Paper:Other”。 但是,当我运行这段代码时,结果描述是“ Bond”还是“ Other”,让我想知道字符串“ Paper:”去了哪里??? 问题答案
我试图在插值字符串中使用条件操作符,但是因为它有一个冒号,编译器认为冒号后面是一个格式字符串。 我如何使用这种类型的语句?我唯一想到的事情是这样的:
问题内容: 我正在尝试将字符串“ 20091229050936”转换为“ 2009年12月29日(UTC)05:09” 给 显然,我犯了一个错误:时间是错误的,它是日期时间对象!它有一个日期 和 一个时间部分! 给 我如何将字符串转换为格式化的日期字符串? 问题答案: 返回一个; 接受作为可选参数: 给