Ошибка not all code paths return a value

I’m trying to write code that returns whether or not a given integer is divisible evenly by 1 to 20,
but I keep receiving the following error:

error CS0161: ‘ProblemFive.isTwenty(int)’: not all code paths return a value

Here is my code:

public static bool isTwenty(int num)
{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }
}

user2864740's user avatar

user2864740

59.6k15 gold badges142 silver badges215 bronze badges

asked Jan 17, 2014 at 20:47

user115185's user avatar

2

You’re missing a return statement.

When the compiler looks at your code, it’s sees a third path (the else you didn’t code for) that could occur but doesn’t return a value. Hence not all code paths return a value.

For my suggested fix, I put a return after your loop ends. The other obvious spot — adding an else that had a return value to the if-else-if — would break the for loop.

public static bool isTwenty(int num)
{
    for(int j = 1; j <= 20; j++)
    {
        if(num % j != 0)
        {
            return false;
        }
        else if(num % j == 0 && num == 20)
        {
            return true;
        }
    }
    return false;  //This is your missing statement
}

answered Jan 17, 2014 at 20:53

4

The compiler doesn’t get the intricate logic where you return in the last iteration of the loop, so it thinks that you could exit out of the loop and end up not returning anything at all.

Instead of returning in the last iteration, just return true after the loop:

public static bool isTwenty(int num) {
  for(int j = 1; j <= 20; j++) {
    if(num % j != 0) {
      return false;
    }
  }
  return true;
}

Side note, there is a logical error in the original code. You are checking if num == 20 in the last condition, but you should have checked if j == 20. Also checking if num % j == 0 was superflous, as that is always true when you get there.

answered Jan 17, 2014 at 21:48

Guffa's user avatar

GuffaGuffa

685k108 gold badges733 silver badges1000 bronze badges

0

I also experienced this problem and found the easy solution to be

public string ReturnValues()
{
    string _var = ""; // Setting an innitial value

    if (.....)  // Looking at conditions
    {
        _var = "true"; // Re-assign the value of _var
    }

    return _var; // Return the value of var
}

This also works with other return types and gives the least amount of problems

The initial value I chose was a fall-back value and I was able to re-assign the value as many times as required.

Alan Moore's user avatar

Alan Moore

6,5256 gold badges54 silver badges68 bronze badges

answered Jul 27, 2014 at 14:25

Evert's user avatar

EvertEvert

811 silver badge2 bronze badges

I like to beat dead horses, but I just wanted to make an additional point:

First of all, the problem is that not all conditions of your control structure have been addressed. Essentially, you’re saying if a, then this, else if b, then this. End. But what if neither? There’s no way to exit (i.e. not every ‘path’ returns a value).

My additional point is that this is an example of why you should aim for a single exit if possible. In this example you would do something like this:

bool result = false;
if(conditionA)
{
   DoThings();
   result = true;
}
else if(conditionB)
{
   result = false;
}
else if(conditionC)
{
   DoThings();
   result = true;
}

return result;

So here, you will always have a return statement and the method always exits in one place. A couple things to consider though… you need to make sure that your exit value is valid on every path or at least acceptable. For example, this decision structure only accounts for three possibilities but the single exit can also act as your final else statement. Or does it? You need to make sure that the final return value is valid on all paths. This is a much better way to approach it versus having 50 million exit points.

answered Jan 27, 2014 at 6:29

Sinaesthetic's user avatar

SinaestheticSinaesthetic

11.3k27 gold badges105 silver badges175 bronze badges

Or simply do this stuff:

public static bool isTwenty(int num)
{
   for(int j = 1; j <= 20; j++)
   {
      if(num % j != 0)
      {
          return false;
      }
      else if(num % j == 0 && num == 20)
      {
          return true;
      }
      else
      {
          return false; 
      }
   }
}

ForceVII's user avatar

ForceVII

3772 silver badges16 bronze badges

answered Feb 5, 2014 at 12:25

DareDevil's user avatar

DareDevilDareDevil

5,2396 gold badges50 silver badges88 bronze badges

1

Have a look at this one. It is the Ternary operator in C#.

bool BooleanValue = (num % 3 != 0) ? true : false;

This is just to show the principle; you can return True or False (or even integer or string) depending on the outcome of something on the left side of the question mark. Nice operator, this.

Three alternatives together:

      public bool test1()
        {
            int num = 21;
            bool BooleanValue = (num % 3 != 0) ? true : false;
            return BooleanValue;
        }

        public bool test2()
        {
            int num = 20;
            bool test = (num % 3 != 0);
            return test;
        }

Even Shorter:

public bool test3()
{
    int num = 20;
    return (bool)(num % 3 != 0);
}

answered Jan 18, 2014 at 22:50

netfed's user avatar

netfednetfed

6028 silver badges18 bronze badges

class Program
{
    double[] a = new double[] { 1, 3, 4, 8, 21, 38 };
    double[] b = new double[] { 1, 7, 19, 3, 2, 24 };
    double[] result;


    public double[] CheckSorting()
    {
        for(int i = 1; i < a.Length; i++)
        {
            if (a[i] < a[i - 1])
                result = b;
            else
                result = a;
        }
        return result;
    }

    static void Main(string[] args)
    {
        Program checkSorting = new Program();
        checkSorting.CheckSorting();
        Console.ReadLine();
    }
}

This should work, otherwise i got the error that not all codepaths return a value. Therefor i set the result as the returned value, which is set as either B or A depending on which is true

answered Jun 1, 2017 at 13:16

Douglas Pettersson's user avatar

This usually happens to me if I misplace a return statement, for example:
enter image description here

Adding a return statement, or in my case, moving it to correct scope will do the trick:
enter image description here

answered Dec 6, 2019 at 15:57

Mirza Sisic's user avatar

Mirza SisicMirza Sisic

2,3914 gold badges24 silver badges37 bronze badges

1

Not all code paths return a value.

Solution: To solve the error, make sure to return a value from all code paths in the function or set noImplicitReturns to false in your tsconfig.json file.

setzamora's user avatar

setzamora

3,5306 gold badges34 silver badges48 bronze badges

answered Jan 28 at 17:09

Jeeva M's user avatar

How to fix not all code paths return a valueWhen you run a set of instructions on your program and it displays not all code paths return a value, it’s an error message. It is caused because the compiler has hit the end of the function without the return statement. The return statement ends the execution of the function and returns a value to the calling function.

If you want to know why you keep receiving the error message, our coding experts are here to help you out!

Contents

  • Why Is Your System Displaying Not All Code Paths Return a Value?
    • – What Happens if There Is No Return Statement in Your Code?
  • How To Solve This Error
    • – Example 1: Fixing the Error While Using C# Program
    • – Example 2: Not All Code Paths Return a Value For C#
    • – Example 3: Fixing the Error While in JavaScript
    • – Example 4: Fixing the Error While Using Typescript
    • – Example 5: Not All Code Paths Return a Value in Lambda Expression
  • FAQs
    • – Which One Is Better, Using”If-else” or “Return”?
    • – What Is the Use of Return Value in Java?
  • Conclusion

Why Is Your System Displaying Not All Code Paths Return a Value?

Your system is displaying that not all code paths return a value error because there should be at least one route that returns a value to the caller but, in this case, there is no route through your function that returns a value. The error message means that the compiler found a way to hit the end of the function without a return statement that tells it what it’s supposed to return.

Another cause of the warning message appearing can be caused if there is no return statement in your code.

– What Happens if There Is No Return Statement in Your Code?

If no return statement appears in a function definition, control automatically returns to the calling function after the last statement of the called function is executed. In this case, the return value of the called function is undefined. If the function has a return type other than void, it’s a serious bug, and the compiler displays an error message.

We recommend that you always use a plain return statement to make your intent clear.

How To Solve This Error

The warning message is common for almost all programming languages such as Lambda, JavaScript, jQuery, C#, PHP, PowerShell 5, and so on.

So, to fully cover the error, we will consider some examples of this error for a couple of programming languages.

– Example 1: Fixing the Error While Using C# Program

Here is an example of a code path that does not return a value resulting in an error when using c# to program:

public bool FindItem(GameObject item)
{
for (int i = 0; i < MyInventory.Length; i++)
{
if (MyInventory[i] == item)
{
//we found the item
return true;
}
//if item not found
return false;
}
}

Result:

Assets/Script/Items/InventoryScript.cs(35,17):error CS0161: `InventoryScript.FindItem(UnityEngine.GameObject)’: not all code paths return a value eslint

Solution:

public bool FindItem(GameObject item) {
return System.Array.IndexOf(MyInventory, item) >= 0;
}

Result:

Assets/Script/Items/InventoryScript.cs(35,17): error CS0161: `InventoryScript.FindItem(UnityEngine.GameObject)’: not all code paths return a value

Problem: The error here is that for loop, we set I = 0. In this case, the test failed because I < My inventory. length which isn’t valid as zero is not less than zero. Since the test failed, the function exits the for loop immediately without checking the following code and not returning true or false. And here we see the error message because we haven’t encountered a return statement.

To fix this problem, we will need to move the return false statement outside the loop to the very end of the function. The loop will check whether the item is in MyInventory [0], and if not, it will always return false before it gets a chance to check MyInventory [1]. We will want to return true if and only if the program ran through the whole array and didn’t find the item, not immediately after a single mismatch.

We recommend you use this solution:

Solution:

public bool FindItem(GameObject item) {
return System.Array.IndexOf(MyInventory, item) >= 0;
}

– Example 2: Not All Code Paths Return a Value For C#

Here is another example if you receive this error message when using c# to program.

We will run a program on the bool value function to see the error.

class Program
{
static void Main(string[] args)
{
bool myChoice = true;
while (myChoice)
{
myChoice = ChoiceGame();
}
}
private static bool ChoiceGame()
{
char Choice;
string Con = “y”;
Console.WriteLine(“What is the command keyword to exit a loop in C#?”);
Console.WriteLine(“a. Quit”);
Console.WriteLine(“b. Continue”);
Console.WriteLine(“c. break”);
Console.WriteLine(“d. exit”);
while (Con == “y”)
{
Console.WriteLine(“Enter Your Choice:”);
Choice = (char)Console.Read();
if (Choice == ‘c’)
{
Console.WriteLine(“Congratulations”);
return false;
}
else if (Choice == ‘a’ || Choice == ‘b’ || Choice == ‘d’)
{
Console.WriteLine(“Incorrect”);
Console.WriteLine(“Again?press y to continue”);
Con = Console.ReadLine().ToString();
return true; }
else
{
Console.WriteLine(“Invalid choice”);
return false;
}
}
}. (solution here)
}

Result: not all code paths return a value c#

Solution: Here in the function, we are returning value for if and else if and then for else. In the if-else statement we selected “c”, “a”, “b”, “d”. There is a logical error here – the compiler doesn’t understand that we will always be in a while loop, and this is why it is showing an error.

After the else returns false, the function should return the while loop false.

– Example 3: Fixing the Error While in JavaScript

If you receive the error message while using JavaScript, it means that in your program there is an instance where your return statement is not returning a value to the calling function.

Let’s consider an example where the set of instructions leads to an error and the possible solution.

document.getElementById(‘search_field’).onkeypress = function(e) {
if (!e) e = window.event;
var keyCode = e.keyCode || e.which;
if (keyCode == ’13’) {
window.location.href = ‘/search/?s=’ + $(‘#search_field’).val();
return false;
}
};

We know that the last bracket will show you an error if you try it, indicating that there is a problem with the code.

To solve the error, try returning the if statement true.

Possible solution:

document.getElementById(‘search_field’).onkeypress = function(e) {
if (!e) {
e = window.event;
}
var keyCode = e.keyCode || e.which;
if (keyCode == ’13’) {
window.location.href = ‘/search/?s=’ + $(‘#search_field’).val();
return false;
}
return true;
};

– Example 4: Fixing the Error While Using Typescript

Let’s consider another example – a Typescript code path that does not return a value, resulting in an error.

public MakeMove(board: Board): boolean {
var pos = this.clickedPosition;
this.clickedPosition = null;
if (null === pos) {
return false;
}
if (this.id === pos.player) {
if (board.GetStones(pos) > 0) {
var finalDrop = board.Sow(pos);
board.Capture(pos.player, finalDrop);
} else {
alert(“Select a house with at least 1 stone!”);
}
} else {
alert(“Select a house from your side!”);
}
}

The mystery here is that, if you remove all the return statements, you will get the expected error.

Result: not all code paths return a value.ts(7030) typescript

– Example 5: Not All Code Paths Return a Value in Lambda Expression

Here is an example of a code path that does not return a value resulting in an error when using Lambda. It means your return statement is not working.

Let’s call a function CountPixels

Task<int> task1 = newTask<int> (() => {CountPixels (croppedBitmap, colour angle.fromArgb (255, 255, 255, 255));});

In the end, we will get an error because we didn’t return CountPixels.

Also, when using PowerShell 5, you can receive an error message, not all code paths return value within method powershell. Now you know what this means.

FAQs

– Which One Is Better, Using”If-else” or “Return”?

They are equally efficient, but the return is usually considered to give better readability, especially when used to eliminate several nested conditions.

Note:

The return should be the last line in the function which returns either a specified value or the last variable assignment in the function. The if-else is meant to conditionally execute code if your test premise is false.

if /* some condition is not met */
return
if /* another requirement is not met */
return
if /* yet another requirement fails */
return
/* now we know it’s OK to proceed */
/*
the “real” work of the procedure begins here
*/

– What Is the Use of Return Value in Java?

The return is used in Javascript, not as an identifier but to exit from a method with or without a value.

Let’s consider an example you can try by yourself. A method with a return value:

public class Main {
static int myMethod(int x) {
return 5 + x;
}
public static void main(String[] args) {
System.out.println(myMethod(3));
}
}
// Outputs 8 (5 + 3)

Conclusion

Now that you have read our article, you won’t find it difficult to solve code path errors again in your function because our coding experts have shown you possible problems and their solutions. Let’s see some of the points we mentioned in the article:

  • The error message is caused whenever the return statement is unable to return a value to the calling function
  • The set of instructions in our programming is known as code path
  • The return statement simply means an exit point from a function
  • The error message can be seen in programming languages such as JavaScript, jQuery, PHP, Dartz, and so on.
  • A function continues to run infinitely unless it is returned

Not all code paths return a valueThe function of the return statement cannot be underrated as it gives the code better readability.

  • Author
  • Recent Posts

Position is Everything

Your Go-To Resource for Learn & Build: CSS,JavaScript,HTML,PHP,C++ and MYSQL. Meet The Team

Position is Everything

If you execute a statement in your TypeScript program and the program does not display all the lines of code that return a value, this is an error because the compiler reaches the end of the function without a return statement. The return statement completes the execution of the function and returns the value of the calling function. If you’re wondering why you’re getting the error, our coding experts are here to help!

What causes the error not all code paths return a value in Typescript

Your system tells you that not all code paths return a value. Because it takes at least one string to return a value to the caller, but in the meantime, what if your function doesn’t return a string? If the function definition has no return information, control is automatically returned to the called function after the last statement of the called function is executed.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// The error occurs here because in this case there is no return value
	}
};

Output:

Error: Not all code paths return a value

The above code gives us an error. Why? The else field is not returned when this method is executed. But if you turn off noImplicitReturns in tsconfig.json, you can run the code. But we don’t recommend fixing this as such because there are many questions about why values are not returned in some cases.

Solution for error not all code paths return a value in Typescript

Throw a error

We raise a new error in the ‘else‘ block when this condition is met. The calling code can handle the error and continue with other operations. Since there is one return value for all conditions, this should fix the error.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// Throw an error, so calling code can handle the error and continue with other operations
		throw new Error("no matching fruit");
	}
};

Return null value

Return null can solve this error, but we recommend using the solution throw an error.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// Return null can solve the error
		return null;
	}
};

Summary

The error not all code paths return a value in Typescript has been solved. In many cases, It would help if you throw an error, so the calling code can handle the error and continue with other operations. We hope you like it. Good luck to you!

Your Go-To Resource for Learn & Build: CSS,JavaScript,HTML,PHP,C++ and MYSQL. Meet The Team

Position is Everything

If you execute a statement in your TypeScript program and the program does not display all the lines of code that return a value, this is an error because the compiler reaches the end of the function without a return statement. The return statement completes the execution of the function and returns the value of the calling function. If you’re wondering why you’re getting the error, our coding experts are here to help!

What causes the error not all code paths return a value in Typescript

Your system tells you that not all code paths return a value. Because it takes at least one string to return a value to the caller, but in the meantime, what if your function doesn’t return a string? If the function definition has no return information, control is automatically returned to the called function after the last statement of the called function is executed.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// The error occurs here because in this case there is no return value
	}
};

Output:

Error: Not all code paths return a value

The above code gives us an error. Why? The else field is not returned when this method is executed. But if you turn off noImplicitReturns in tsconfig.json, you can run the code. But we don’t recommend fixing this as such because there are many questions about why values are not returned in some cases.

Solution for error not all code paths return a value in Typescript

Throw a error

We raise a new error in the ‘else‘ block when this condition is met. The calling code can handle the error and continue with other operations. Since there is one return value for all conditions, this should fix the error.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// Throw an error, so calling code can handle the error and continue with other operations
		throw new Error("no matching fruit");
	}
};

Return null value

Return null can solve this error, but we recommend using the solution throw an error.

Example:

const getFruits = (value: string) => {
	if (value == "orange") {
		return "orange";
	} else if (value == "apple") {
		return "apple";
	} else {
		// Return null can solve the error
		return null;
	}
};

Summary

The error not all code paths return a value in Typescript has been solved. In many cases, It would help if you throw an error, so the calling code can handle the error and continue with other operations. We hope you like it. Good luck to you!

Carolyn Hise has three years of software development expertise. Strong familiarity with the following languages is required: Python, Typescript/Nodejs, .Net, Java, C++, and a strong foundation in Object-oriented programming (OOP).

Joker_23

1 / 1 / 0

Регистрация: 22.04.2022

Сообщений: 35

1

Ошибка компиляции «не все по пути к коду возвращают значение»

29.04.2022, 18:01. Показов 3571. Ответов 21

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте, помогите пожалуйста устранить ошибку CS0161 «Program.Main()»: не все по пути к коду возвращают значение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
static long MathFib(int f)
{
    if (f < 1) return 0;
    if (f == 1) return 1;
    return MathFib(f - 1) + MathFib(f - 2);
}
 
namespace ConsoleApp1
{
    class Program
    {
 
        static void yuriy_1()
        {
            double y, x, k, chiss, summ, znamm;
            Console.WriteLine("x =");
            x = Convert.ToInt32(Console.ReadLine());
            k = 1;
            summ = 0;
            do
            {
                chiss = (1 / Math.Pow(k, 2));
                summ += chiss;
                k++;
            }
            while (Math.Abs(chiss) > Math.Pow(10, -5));
            znamm = Math.Pow(Math.Cos(Math.Pow(x, 2) - 3) / Math.Sin(Math.Pow(x, 2) - 3), 2);
            if (znamm != 0)
            {
                y = summ / znamm;
                Console.WriteLine($"y ={y}");
            }
            else
            {
                Console.WriteLine("Error");
            }
        }
        long yuriy_2()
        {
            int f;
            f = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("F = ");
            Console.WriteLine($"MathFib(f)");
            if (f <= 0)
            {
                Console.WriteLine("Errorn");
            }
            return 0;
        }
        int Main()
        {
            int x;
            Console.WriteLine("Vvedit chislo 1 abo 2 de 1 tse 1 zavdannya a 2 tse 2 zavdannyan");
            Console.WriteLine("Dlya vyhodu z programmi vvedit 999n");
            x = Convert.ToInt32(Console.ReadLine());
            switch (x)
            {
                case 1:
                    Console.WriteLine("zavdanya1n");
                    yuriy_1();
                    Main();
                    break;
                case 2:
                    Console.WriteLine("zavdanya2n");
                    yuriy_2();
                    Main();
                    break;
                case 999:
                    Environment.Exit(0);
                    break;
                default:
                    Main();
                    break;
            }
        }
    }
}



0



Joker_23

1 / 1 / 0

Регистрация: 22.04.2022

Сообщений: 35

29.04.2022, 18:15

 [ТС]

2

Здравствуйте, помогите пожалуйста устранить ошибку CS0161 «Program.Main()»: не все по пути к коду возвращают значение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
static long MathFib(int f)
{
    if (f < 1) return 0;
    if (f == 1) return 1;
    return MathFib(f - 1) + MathFib(f - 2);
}
 
namespace ConsoleApp1
{
    class Program
    {
 
        static void yuriy_1()
        {
            double y, x, k, chiss, summ, znamm;
            Console.WriteLine("x =");
            x = Convert.ToInt32(Console.ReadLine());
            k = 1;
            summ = 0;
            do
            {
                chiss = (1 / Math.Pow(k, 2));
                summ += chiss;
                k++;
            }
            while (Math.Abs(chiss) > Math.Pow(10, -5));
            znamm = Math.Pow(Math.Cos(Math.Pow(x, 2) - 3) / Math.Sin(Math.Pow(x, 2) - 3), 2);
            if (znamm != 0)
            {
                y = summ / znamm;
                Console.WriteLine($"y ={y}");
            }
            else
            {
                Console.WriteLine("Error");
            }
        }
        long yuriy_2()
        {
            int f;
            f = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("F = ");
            Console.WriteLine($"MathFib(f)");
            if (f <= 0)
            {
                Console.WriteLine("Errorn");
            }
            return 0;
        }
 
        private int Main()
        {
            int x;
            Console.WriteLine("Vvedit chislo 1 abo 2 de 1 tse 1 zavdannya a 2 tse 2 zavdannyan");
            Console.WriteLine("Dlya vyhodu z programmi vvedit 999n");
            x = Convert.ToInt32(Console.ReadLine());
            switch (x)
            {
                case 1:
                    Console.WriteLine("zavdanya1n");
                    yuriy_1();
                    Main();
                    break;
                case 2:
                    Console.WriteLine("zavdanya2n");
                    yuriy_2();
                    Main();
                    break;
                case 999:
                    Environment.Exit(0);
                    break;
                default:
                    Main();
                    break;
            }
        }
    }
}



0



Эксперт .NET

6318 / 3936 / 1578

Регистрация: 09.05.2015

Сообщений: 9,238

29.04.2022, 18:46

3

У вас у Main указан тип возвращаемого значения int и нет ни одного return…



0



Модератор

Эксперт С++

13295 / 10431 / 6250

Регистрация: 18.12.2011

Сообщений: 27,866

29.04.2022, 19:39

4

Цитата
Сообщение от Joker_23
Посмотреть сообщение

int Main()

И где возвращаете этот int?



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

29.04.2022, 20:27

5

Цитата
Сообщение от zss
Посмотреть сообщение

И где возвращаете этот int?

а серьёзная ли это проблема? я просто курсач пишу, и у меня много где есть, где функция не возражает значение



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

29.04.2022, 20:30

6

Цитата
Сообщение от maricruz
Посмотреть сообщение

а серьёзная ли это проблема?

Да нет. Просто программу не сможете скомпилировать и запустить. Является ли это проблемой, уже решайте сами.

Цитата
Сообщение от maricruz
Посмотреть сообщение

у меня много где есть, где функция не возражает значение

Не возвращают значения, если у них тип void.



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

29.04.2022, 22:30

7

Цитата
Сообщение от QuakerRUS
Посмотреть сообщение

Просто программу не сможете скомпилировать и запустить

компилируется и запускается, визуал студиа 2022

Добавлено через 38 секунд

Цитата
Сообщение от QuakerRUS
Посмотреть сообщение

Не возвращают значения, если у них тип

я знаю, у меня в курсовой местами void и main



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

30.04.2022, 00:52

8

Цитата
Сообщение от maricruz
Посмотреть сообщение

компилируется и запускается, визуал студиа 2022

Еще раз, оно не сможет скомпилироваться, если тип метода Main отличается от void или вы в конце метода не используете возврат значения через return.



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

30.04.2022, 18:31

9

Цитата
Сообщение от QuakerRUS
Посмотреть сообщение

Еще раз, оно не сможет скомпилироваться, если тип метода Main отличается от void или вы в конце метода не используете возврат значения через return.

оно компилируется, НО пишется варнинг что не при всех условиях возращается значение



0



Эксперт .NET

6318 / 3936 / 1578

Регистрация: 09.05.2015

Сообщений: 9,238

30.04.2022, 18:33

10

Цитата
Сообщение от maricruz
Посмотреть сообщение

оно компилируется, НО пишется варнинг что не при всех условиях возращается значение

Оно НЕ компилируется. И там не варнинг, а ОШИБКА компиляции…

error CS0161: ‘Program.Main()’: not all code paths return a value



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

30.04.2022, 18:34

11

Цитата
Сообщение от Someone007
Посмотреть сообщение

Оно НЕ компилируется. И там не варнинг, а ОШИБКА компиляции…

щас скрин дам



0



Эксперт .NET

6318 / 3936 / 1578

Регистрация: 09.05.2015

Сообщений: 9,238

30.04.2022, 18:35

12

Цитата
Сообщение от maricruz
Посмотреть сообщение

щас скрин дам

Зачем мне вас скрин, если и так всё известно. Вот даже пруф.



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

30.04.2022, 18:39

13

Цитата
Сообщение от Someone007
Посмотреть сообщение

Оно НЕ компилируется. И там не варнинг, а ОШИБКА компиляции…

уже не дам, исправил всё, а, запускалось походу потому что у меня был return в функции main, у меня нехватало return’ов в других функциях типа int, у меня где-то в функции были выходы из нее,но не было return’a вконце функции, и писано что не при всех условиях возращается значение, вот наверно как

Добавлено через 1 минуту

Цитата
Сообщение от Someone007
Посмотреть сообщение

Зачем мне вас скрин, если и так всё известно. Вот даже пруф.

я ниже написал



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

30.04.2022, 18:40

14

Цитата
Сообщение от maricruz
Посмотреть сообщение

не при всех условиях возращается значение

Не скомпилируется это, не важно, в Main или нет пропущен return.



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

30.04.2022, 18:43

15

Цитата
Сообщение от QuakerRUS
Посмотреть сообщение

Не скомпилируется это, не важно, в Main или нет пропущен return.

да ёпрст, смотри, есть какая-то функция у меня, в ней есть где-то условие на выход(выход из функции у меня организован через return) и получается так что больше нигде у меня не прописан return( как я понимаю он ещё должен быть в конце ), код компилировался и было предупреждение что не при всех условиях возращается значение



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

30.04.2022, 18:46

16

Цитата
Сообщение от maricruz
Посмотреть сообщение

код компилировался и было предупреждение что не при всех условиях

Это ошибка и код такой не скомпилируется. Можете попытаться привести код, который скомпилируется с таким якобы варнингом.



0



13 / 8 / 5

Регистрация: 28.03.2022

Сообщений: 83

30.04.2022, 18:47

17

Цитата
Сообщение от QuakerRUS
Посмотреть сообщение

варнингом

я уже все исправил в коде,это был не варнинг, а предупреждение

примерно писало вот так : Значение возвращается не при всех путях выполнения



0



QuakerRUS

1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

30.04.2022, 18:49

18

Цитата
Сообщение от maricruz
Посмотреть сообщение

я уже все исправил в коде

То есть вы не можете привести код. Хорошо, тогда я докажу обратное.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Program
{
    static int Foo(int x)
    {
        if (x != 12345)
            return 1;
    }
 
    static void Main()
    {
        Foo(1);
    }
}

Код

error CS0161: "Program.Foo(int)": не все пути к коду возвращают значение.



0



Эксперт .NET

6318 / 3936 / 1578

Регистрация: 09.05.2015

Сообщений: 9,238

30.04.2022, 18:52

19

Цитата
Сообщение от maricruz
Посмотреть сообщение

код компилировался и было предупреждение что не при всех условиях возращается значение

Такого предупреждения в принципе не существует в C#…

Цитата
Сообщение от maricruz
Посмотреть сообщение

это был не варнинг, а предупреждение

Вы не поверите, но warning это и есть предупреждение…

Возможно вы попутали CS0161 и CS0162



0



QuakerRUS

1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

30.04.2022, 19:02

20

Цитата
Сообщение от Someone007
Посмотреть сообщение

Возможно вы попутали CS0161 и CS0162

Nice try. Тоже попробую вангануть.

Так как maricruz недавно создал тему в разделе C++, то делаю ставку на то, что он перепутал язык.

C++
1
2
3
4
5
6
7
8
9
10
int foo(int x)
{
    if (x != 12345)
        return 1;
}
 
int main()
{
    foo(1);
}

Код

warning C4715: foo: значение возвращается не при всех путях выполнения



0



  • Remove From My Forums
  • Question

  •  

    Hi, I'm trying to create an if-then-else statement that will allow me to check if invalid characters are being input instead of a numerical score. i keep getting an error on line 6,"

    prog.cs(6,19): error CS0161: `Exam1.MyProgram.ReadInteger(string)': not all code paths return a value"

    If you could lend some expertise, I'd greatly appreciate it.

    using System;
    namespace score
    {
    class MyProgram
    {
    public static int ReadInteger(string prompt)
    {
    string input;
    int i;
    Console.Write(prompt);
    input = Console.ReadLine();
    i = int.Parse(input);
    if (input == "")
    Console.WriteLine("Invalid, please try again...");
     
    else if (int.TryParse(input, out i) == false)
    Console.WriteLine("Invalid, please try again...");
     
    else
    return i;
    }
     
    public static void Main()
    {
    int i;
    i = ReadInteger("Please enter an exam score: ");
    Console.WriteLine();
    Console.WriteLine("You entered: " + i);
    Console.WriteLine();
    }
    }
    }

     

     

    
    

Answers

  • You have declared the return type of the method ReadInteger as int. Therefore the method
    must return an integer on every code path. Right now the compiler sees that the only way the method will return an integer is if some conditions are met.
    You might believe that the condition will always eventually be met, but the compiler doesn’t know that.

    You need to either add a statement at the end of the method to return an arbitrary integer like «0» or «-1», or change the flow of your method so that the «return i» statement is not inside a conditional. I’m not telling you exactly how to do this because
    this is obviously homework :)


    Joshua Honig

    Learn more about data programming at bytecomb.com

    • Proposed as answer by

      Tuesday, March 12, 2013 4:44 AM

    • Marked as answer by
      Bob Shen
      Friday, March 22, 2013 9:01 AM

  • Your problem is here:

    if (input == "")
    Console.WriteLine("Invalid, please try again...");
     
    else if (int.TryParse(input, out i) == false)
    Console.WriteLine("Invalid, please try again...");
     
    else
    return i;

    If you rewrite this using braces (which I recommend anyways), you’ll see the problem more clearly:

      if (input == "")
      {
        Console.WriteLine("Invalid, please try again...");
      }
      else if (int.TryParse(input, out i) == false)
      {
        Console.WriteLine("Invalid, please try again...");
      }
      else
      {
        return i;
      }
    
      // You're not returning anything here!  When your input is invalid, this still needs to return something....
    }


    Reed Copsey, Jr. — http://reedcopsey.com
    If a post answers your question, please click «Mark As Answer» on that post and «Mark as Helpful«.

    • Marked as answer by
      Bob Shen
      Friday, March 22, 2013 9:01 AM

Понравилась статья? Поделить с друзьями:
  • Ошибка nt authority контроллеры домена предприятия не имеет replicating
  • Ошибка nonexistent host networking interface
  • Ошибка nst на частотники altivar
  • Ошибка nonetype object has no attribute get
  • Ошибка nsqlite3query city car driving