我练习方法,但问题是我想分开输入和排序,显示方法将是主要的,我无法从其他类修复此调用。
这是我的剧本:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CaseProblem
{
class Method
{
static void MethodInput()
{
int[] array = new int[5];
int i;
// loop for accepting values in array
for (i = 0; i < 5; i++)
{
Console.Write("Enter number:\t");
array[i] = int.Parse(Console.ReadLine());
}
}
public static void MethodSort()
{
foreach (int i in array)
{
Console.Write(" {0}", i);
}
}
}
class Program
{
static void Main(int[]array)
{
//sorting array value;
Array.Sort(array); //use array's sort function
Method.MethodSort(array);
Console.ReadLine();
}
}
}
感谢您的帮助
答案 0 :(得分:0)
好吧,你缺少被调用函数的参数。
{{1}}
注意:未经测试
答案 1 :(得分:0)
首先Main()
(或&#34; EntryPoint&#34;我们应该调用它)不能将int[]
作为输入参数,而是string[]
而应该学习基础知识在开始实际编码之前编程。
第二件事:
我想分开输入和排序
您可以创建名为Input
public class Input
{
public static void Write(string message)
{
Console.WriteLine(message);
}
public static int? ReadInt(string reason)
{
Write(reason);
string userInput = Console.ReadLine();
int parsed = 0;
if(int.TryParse(userInput, out parsed))
return (int?)parsed;
return null;
}
}
这将是您的&#34; InputLogic&#34;您可以将其用作Input.ReadInt("Please specify your age: ");
接下来,您可以创建一个Operations
对象:
public class Operations
{
public void Display(int[] arr)
{
foreach(int i in arr)
{
// and since you have "Input" class that can display things
Input.Write(i.ToString());
}
}
public void Sort(ref int[] arr)
{
Array.Sort(arr);
}
}
现在最后一件事是将其合并到Program
class Program
{
static void Main(string[] args)
{
int[] arr = new int[5];
for(int i = 0; i < arr.Length; i++)
{
int? input = null;
while( !( input = Input.ReadInt("Give me number") ).HasValue ) { }
arr[i] = input.Value;
}
Operations op = new Operations();
op.Display(arr);
op.Sort(ref arr);
op.Display(arr);
}
}
答案 2 :(得分:0)
好的,这个方法都有两个错误:
public static void MethodSort()
{
foreach (int i in array)
{
Console.Write(" {0}", i);
}
}
以及你如何称呼它:
Method.MethodSort(array);
第一个问题是该方法使用变量array
,该变量在该方法的scope中不存在。
第二个问题是您将array
传递给Method.MethodSort
,但该方法未配置为参数。
有两种方法可以解决此问题:完全删除array
,或更改方法以接受它。现在,你显然无法删除array
,因为重点是用它来做事。因此,逻辑解决方案是将array
作为参数添加到您的方法中:
public static void MethodSort(int[] array)
{
foreach (int i in array)
{
Console.Write(" {0}", i);
}
}
答案 3 :(得分:-1)
由于我们中的一些人无法读取代码,我将解释我在这里所做的事情。我已将您的静态方法标记为公开,因此您可以访问它们。我给了类一个Helper postfix,因为它包含静态方法,消费者应该知道这不是一个简单的类,它存储了它的内部状态。由于我们使用静态方法,因此将它们视为传统的C函数。它们实际上没有状态(除了静态声明的字段和属性,但我们没有这些)。因此,您需要传递您将在其中使用的每个参数或在本地计算它们。由于您在数组上操作,我们将它们作为参考传递。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace CaseProblem
{
class CaseHelper
{
public static void ReadFiveNumbersToAnArray(ref int[] array)
{
int i;
// loop for accepting values in array
for (i = 0; i < 5; i++)
{
Console.Write("Enter number:\t");
array[i] = int.Parse(Console.ReadLine());
}
}
public static void WriteOutAnArrayPlease(ref int[] array)
{
foreach (int i in array)
{
Console.Write(" {0}", i);
}
}
}
class Program
{
static void Main(int[] parameters)
{
int[] array = new int[5];
CaseHelper.ReadFiveNumbersToAnArray(ref array);
//sorting array value; <-- It's obvious from the method named Sort.
Array.Sort(array); //use array's sort function <-- Again, we know this.
CaseHelper.WriteOutAnArrayPlease(ref array);
Console.ReadLine();
}
}
}