2016-10-07 4 views
2

목표는 함수를 정의한 다음 필요에 따라 함수를 호출하는 것입니다. 나는 여기에 묻는 유사한 질문들에 대한 나의 코드를 모델링하고있다. 하지만 실제로 코드의 첫 번째 덩어리에서 용어를 정의한 적이 없으며 두 번째 부분에서 어떻게 호출해야 하는지를 파악할 수 없습니다. 저의 책과 온라인 자원을 다 써 버렸습니다.함수 정의 및 호출

누군가 다른 방법을 호출하는 방법을 좀 더 명확하게 설명 할 수 있다면 크게 감사하겠습니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace FunctionCalls 
{ 
    class Functions 
    { 
     static public double addNumbers(double number1, double number2) 
     { 
     double result1 = number1 + number2; 
     return result1; 
     } 

     static public double subtractNumbers(double number1, double number2) 
     { 
     double result2 = number1 - number2; 
     return result2; 
     } 

     static public double avgNumbers(double number1, double number2) 
     { 
     double result3 = (number1 + number2)/2; 
     return result3; 
     } 

     public static void Main(String[] args) 
     { 
     Functions.addNumbers(result1); 
     Functions.subNumbers(result2); 
     Functions.avgNumbers(result3); 

     Console.WriteLine($"The sum of your numbers is {0}", result1); 
     Console.WriteLine($"The difference of your numbers is {0}", result2); 
     Console.WriteLine($"The average of your numbers is {0}", result3); 

     Console.ReadKey(); 
    } 
} 
+1

모든 세 가지 방법은 2 매개 변수가 필요하고 당신은 오직 그들 각각에 1을 통과하고, 당신은 반환을 잡지 않았어. 함수의 에드 값 – shole

+1

당신은 함수 인자 (입력)와 함수 출력을 혼동하고 있다고 생각합니다. 변수 result1, result2 및 result3을 각각 입력으로하여'addNumbers','subNumbers' 및'avgNumbers'를 호출하지만, 나중에 함수의 출력을 포함 할 것으로 예상하는 것처럼 해당 변수를 사용합니다. 또한 주 메소드에서 변수를 정의하지 않습니다 (변수를 사용하기 전에 변수를 정의해야합니다). –

+0

내 목표 (및 과제)는 함수를 설정 한 다음 사용자가 2 개의 숫자를 입력하도록하는 것이 었습니다.그런 다음 설정된 기능을 호출하여 다양한 결과를 제공하고 결과를 사용자에게 출력하십시오. 나는 나의 설명에서 그것을 놓친 것을 사과한다. 나는 어떻게해야 할지를 알 수 없었다. 그러나 이러한 매개 변수 내에서 좋은 코드를 작성하는 코드를 얻는 것이 었습니다. 내가 사용하려고하는 코드의 모든 기능을 더 잘 이해했으면 좋겠습니다. 나는 그것이 나의 문제를 발견하고 고치는 데 도움이 될 것이라고 생각한다. 그것은 그대로, 나는 VS에서 튀어 나오는 모든 오류를 수정하고 있습니다. – Alex

답변

3

괄호는 메소드 인자를 포함 (귀하의 경우, 숫자가 더하기, 빼기 또는 평균) :

여기 내 코드입니다. 메소드가 무언가를 반환하면 등호를 가진 호출 루틴의 변수에 값을 할당해야합니다. 당신이 메서드를 호출 할 때

public static void Main(String[] args) 
    { 
     var result1 = Functions.addNumbers(13, 14); 
     var result2 = Functions.subNumbers(17, 18); 
     var result3 = Functions.avgNumbers(20, 21); 
0

일반 설명

, 호출에 여러 구성 요소가 있습니다.

var returnValue = StaticClassOrObject.MethodName(parameterOne, parameterTwo, etc); 

// For Example 
double sinValue = Math.Pow(2, 8); 

MethodName은 정의 된대로 이름입니다. 이 예제에서 메서드의 이름은 "Pow"입니다.

StaticClassOrObject은 메서드를 호출하는 정적 클래스 또는 개체 참조의 이름입니다. 이 예제에서는 정적 클래스 "Math"입니다. (당신이 메소드가 정의되어 같은 클래스 내에서 메소드를 호출하는 경우,이 구성 요소는 선택 사항입니다.)

parameterOne, parameterTwo, etc 메소드에 전달되는 매개 변수입니다. 메소드가 특정 수의 매개 변수를 갖는 것으로 선언되면 메소드를 호출 할 때 많은 매개 변수가 전달되어야합니다. 이 예에서 Math.Pow 메서드는 두 개의 매개 변수를 사용하므로 더 이상 또는 더 작은 값을 전달하면 오류가 발생합니다.

returnValue은 메소드 실행시 반환되는 값입니다. 메서드의 반환 형식이 void 인 경우이 메서드는 아무 것도 반환하지 않습니다. 이 예에서 Math.Powdouble 유형의 값을 반환하므로 반환 된 값을 보유 할 변수를 선언합니다. (바로 가기를 이용하면 변수의 유형이 자동으로 메서드의 반환 형식으로 설정해야 할 키워드 var를 사용할 수 있습니다.)

귀하의 오류

오류에 프로그램은 두 가지입니다. 먼저 메서드 호출에서 하나의 매개 변수 만 전달하지만 각 메서드는 두 개의 매개 변수가 필요한 것으로 정의됩니다. 둘째, 전달하는 매개 변수 (result1, result2, result3)는 어디에도 선언되어 있지 않으므로 프로그램 목적 상 존재하지 않습니다.

이러한 오류를 수정하는 것은 당신에게 뭔가를 줄 것이다 다음

var result1 = Functions.addNumbers(1, 2); 
var result2 = Functions.addNumbers(3, 4); 
var result3 = Functions.addNumbers(5, 6); 

당신이하고있는 모든 것이 Functions 클래스 내에서, 그래서 전화의 ClassNameOrObject 부분은 안전하게 제거 할 수 있지만 :

var result1 = addNumbers(1, 2); 
var result2 = addNumbers(3, 4); 
var result3 = addNumbers(5, 6); 

이제이 예제는 상수 값을 매개 변수로 전달합니다. 매개 변수로 변수를 전달하려면 먼저 선언하고 인스턴스화해야한다 : 첫째

double param1 = 1; 
double param2 = 2; 
var result1 = addNumbers(param1, param2); 
0

첫 번째 것들 ... 난 당신이 가르쳐 C# 프로그래밍과 자기에 대한 새로운 이해 무엇

. Visual Studio에서 C# 프로그램을 배우는 것이 좋습니다. 그러면 문제를 신속하게 파악하는 데 도움이됩니다. 위의 코드에서 볼 수있는 컴파일 타임 오류 또는 구문 오류가있는 경우 IDE에 빨간색 구불 구불 한 모양이 표시됩니다. 아래를 참조하십시오 내 Pic 그림에서 오류 표시는 엉덩이입니다. Number는 2로 분리 된 매개 변수를 요구하며 1을 전달합니다. 두 개의 숫자 또는 double로 선언 된 두 개의 변수에 값을 할당해야합니다. 당신이 결과 1을 선언하지 않은 의미가 - - 위의 화면에서 enter image description here

, 당신은 결과 1 컨텍스트에 존재하지 않는 오류를, "볼 수 있습니다. 당신은 두 번 유형의 두 변수를 선언 할 필요가 enter image description here

위의 화면에서 다른 오류를 참조 - 예상치 못한 문자 $를 - 확실하지 당신이있어 그리고 당신이

enter image description here

위의 화면 Console.WriteLine을를 참조하십시오 .. $ 기호로 쓰기를 시도했다하는 expec입니다 ting String과 param 객체를 올바르게 제공했다면 왜 $ sign을 추가 했는가?

Visual Studio가 정말 필요하다고 생각하므로 많은 문제를 직접 해결할 수있을 것입니다.

여기는 완전한 실행 프로그램입니다. 나는에 도움을 줄 수 있다면 - 여기

namespace FunctionCalls 
{ 
    class Functions 
    { 
     static public double addNumbers(double number1, double number2) 
     { 
     double result1 = number1 + number2; 
     return result1; 
     } 

     static public double subtractNumbers(double number1, double number2) 
     { 
     double result2 = number1 - number2; 
     return result2; 
     } 

     static public double avgNumbers(double number1, double number2) 
     { 
     double result3 = (number1 + number2)/2; 
     return result3; 
     } 

     static void Main(String[] args) 
     { 
      double result1 = 20.00; 
      double result2 = 10.00; 
      double sum, sub, avg; 

      sum = Functions.addNumbers(result1, result2); 
      sub = Functions.subtractNumbers(result1, result2); 
      avg = Functions.avgNumbers(result1, result2); 

      Console.WriteLine("The sum of your numbers is {0}", sum); 
      Console.WriteLine("The difference of your numbers is {0}", sub); 
      Console.WriteLine("The average of your numbers is {0}", avg); 

      Console.ReadKey(); 
     } 
    } 
} 

는 응답 한이 도움이 enter image description here

희망 ..

해피 학습

표시하시기 바랍니다 .. 결과 스크린 샷 귀하의 질문에 대답 ..

관련 문제