我已经使用C#2个月了,我必须编写一个可以反转字符串的程序(需要使用方法)。我需要在另一个具有main方法的类中调用该方法。我已经做到了,但是当程序运行时,它只是要求我输入一个字符串,并且不会反向显示一个字符串,请帮忙。
这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assign3
{
class MyStr
{
public string reverseStr(string Myname)
{
string temp = "";
int i, j;
Console.WriteLine("String in reverse: ");
for (j = 0, i = Myname.Length - 1; i >= 0; i--, j++)
temp += Myname[i];
return temp;
}
}
}
和下一堂课
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assign3
{
class Test
{
static void Main(string[] args)
{
string answer;
MyStr aString = new MyStr();
//MyStr.reverseStr(string temp);
//Console.WriteLine(aString);
Console.WriteLine("enter a string");
Console.ReadLine();
answer = aString.reverseStr("");
Console.WriteLine(answer);
Console.WriteLine(aString.reverseStr(i);
Console.ReadLine();
}
}
}
我不知道如何获取此方法以反向输出字符串。请帮助我了解我做错了什么,并指导我朝正确的方向进行纠正。
答案 0 :(得分:3)
我根本没有检查过您的字符串反转算法,但是在以下两行中:
Console.ReadLine();
answer = aString.reverseStr("");
您可以通过ReadLine()从用户那里获得一个字符串,因为您没有将其存储在变量中,所以您将其丢弃了。然后,您要求reverseStr()反转一个空白字符串,这可能不是您想要的。
它看起来应该更像:
string response = Console.ReadLine();
answer = aString.reverseStr(response);
或者您可以将两者合而为一:
answer = aString.reverseStr(Console.ReadLine());
答案 1 :(得分:2)
您对用户的输入不做任何事情:
Console.ReadLine();
您正在反转一个空字符串:
answer = aString.reverseStr("");
存储用户的输入并将其取反:
var input = Console.ReadLine();
answer = aString.reverseStr(input);
答案 2 :(得分:1)
您可以像这样在主方法中反转字符串
public static void Main(string[] args)
{
Console.WriteLine("enter a string");
string stng =Console.ReadLine();
char[] revArray = stng.ToCharArray();
Array.Reverse( revArray );
Console.WriteLine(revArray);
Console.ReadLine();
}
答案 3 :(得分:0)
您正在用空字符串aString.reverseStr("")
填充方法。您必须将用户输入读入变量,然后将此变量传递给reverse方法。
string input = Console.ReadLine();
answer = aString.reverseStr(input);
您可以在不使用j
变量的情况下将其删除。 Console.WriteLine("String in reverse: ");
应该在main方法中,所有其他控制台输入/输出都在其中。 reverseStr
方法应仅执行可逆操作,而没有副作用。这样会更干净。
您可以像这样通过构造函数传递参数
class MyStr
{
private string _name;
// Constructor. Has same name as class. Doesn't have a return type.
public MyStr(string name)
{
_name = name;
}
public string ReverseStr()
{
string temp = "";
int i, j;
for (j = 0, i = _name.Length - 1; i >= 0; i--, j++)
temp += _name[i];
return temp;
}
}
您会这样称呼它
var myStr = new MyStr(input);
string result = myStr.ReverseStr();
答案 4 :(得分:0)
不幸的是,没有内置函数可以做到这一点。您可以使用char数组并反转数组,然后返回字符串。
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string input;
string output;
MyStr aString = new MyStr();
Console.WriteLine("enter a string");
input = Console.ReadLine();
output = aString.reverseStr(input);
Console.WriteLine(output);
Console.ReadLine();
}
}
class MyStr
{
public string reverseStr(string Myname)
{
char[] arr = Myname.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
}
}
或者,您可以定义字符串的扩展名,而不是MyStr类。您的通话说明将简单到
string output = input.Reverse();
扩展方法如下,它可以在任何地方使用而无需通过使用字符串变量实例化类。
public static class StringUtility
{
public static string Reverse(this string input)
{
char[] arr = input.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
}