![](/img/trans.png)
[英]Unreachable statement error when trying to return from a while loop - Java
[英]Error: Unreachable code when trying to return two variables from a function.
该程序访问一个名为indata.txt的文件,该文件与程序本身保存在同一文件夹中。 它只是一个简单的文本文件,其中保存有单词:绿色黄色蓝色红色
使用分词器,将这些颜色词保存到名为String [] myarray;
的数组中String [] myarray;
int numTokens;
应该计算每个单词保存在数组中的数量。
如果numTokens = 4;
,则myarray [numTokens]
= myarray [4]
然后,以相反的顺序运行该数组。
在public static int mymethod
方法中,for循环使用numTokens贯穿数组。
变量int len;
应该算出最长的单词有多少个字母。
然后该值应返回给main方法
public static void main (String[] args) throws java.io.IOException
,然后将值打印出来。
然后,将变量int indexvalue;
应该计算数组中最长单词的位置。
例如:绿色= 0,黄色= 1,蓝色= 2,红色= 3。
然后应该使用int indexvalue;
打印出数组中最长的单词int indexvalue;
System.out.println("The largest length of the array is " +myarray [indexvalue]);
但是,该程序无法正常工作。 此错误消息出现在编译器输出中:
错误:无法访问的代码
我需要将两个变量都返回到main方法以将其打印出来。
我的程序有什么问题(如果有的话)?
`import java.io.*;
import java.util.*;
public class MyFileReader
{
public static int mymethod (String [] myarray, int len, int numTokens, int length, int lengths, int indexvalue) {
for (numTokens = 3; numTokens >=0; numTokens-- ) {
length = lengths;
lengths= myarray [numTokens].length();
if (length > lengths) {
len = length;
indexvalue = numTokens;
}
else {
len = lengths;
}
}
return len;
return indexvalue; // error is here
}
public static void main (String[] args) throws java.io.IOException
{
int len =0;
int length =0;
int lengths =0;
int indexvalue =0;
String s1;
String s2;
BufferedReader br = new BufferedReader (new FileReader ("indata.txt"));
s1 = br.readLine();
System.out.println ("The line is " + s1);
System.out.println ("The line has " + s1.length() + " characters");
System.out.println ();
System.out.println ("Breaking the line into tokens we get:");
int numTokens = 0;
StringTokenizer st = new StringTokenizer (s1);
String [] myarray;
myarray = new String[4];
while (st.hasMoreTokens())
{
s2 = st.nextToken();
myarray [numTokens]= s2;
numTokens++;
System.out.println (" Token " + numTokens + " is: " + s2);
}
System.out.print("\n");
for (numTokens = 3; numTokens >= 0; numTokens--) {
System.out.println("Value of array is " +myarray [numTokens]);
}
System.out.print("\n");
System.out.println("Largest length value is " + mymethod(myarray, len, numTokens, length, lengths, indexvalue));
System.out.println("Index value is " + mymethod(myarray, len, numTokens, length, lengths, indexvalue));
System.out.print("\n");
System.out.println("The largest length of the array is " +myarray [indexvalue]);
}
}`
return len;
return indexvalue; // error is here
Java不允许永远不会执行的代码。 这包括return语句后的所有代码。 由于return语句退出该方法,因此永远无法读取该方法之后的所有内容。 通常,多个返回在if-else条件下分支,因此只能执行其中之一。
编辑:如果想法是一次返回多个变量,则可以返回一个数组,也可以从具有所需字段的新Class中返回一个自定义对象。
一个方法只能执行一个return
语句。 一旦返回值,程序将退出该方法。 return indexvalue
无法到达,因为它在另一个return语句之后。
如果必须返回两个值,请尝试使用int数组
public static int[] mymethod (String [] myarray, int len, int numTokens, int length, int lengths, int indexvalue){
int[] result = new int[2];
.
.
.
result[0] = len;
result[1] = indexvalue;
return result;
}
更好的解决方案是使用这些属性创建一个对象,然后返回该对象。 干杯。
此方法“ mymethod”仅给出第一个return语句,然后死亡,您可以返回一个数组,或者仅删除“ len”参数并返回其他语句。
或者,您可以这样做:
System.out.println("Largest length value is " + myarray[numTokens].length());
然后清理方法的参数,因为它们看起来很混乱,不需要那么多参数,您可能会感到困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.