如何在java中跳转
我有这样的代码如何在java中跳转,java,Java,我有这样的代码 public class Test { public static void main(String[] args) { continue s; System.out.println("I am not supposed to print this"); s: System.out.println("I am suppose to print this"); } } 我得到了错误 jav
public class Test
{
public static void main(String[] args)
{
continue s;
System.out.println("I am not supposed to print this");
s:
System.out.println("I am suppose to print this");
}
}
我得到了错误
java: undefined label: s
怎么了?continue是Java中用于跳过循环迭代的关键字。
如果你想找到一个等价于GOTO的方法,你应该重新考虑你是如何解决你的问题的,GOTO从来都不是一个有效的选择。据我所知,Java中没有GOTO(有一个关键字,但没有任何意义)像这样跳跃在Java中是不可能的,跳转的唯一方法是从循环中跳转,而不是跳转
class ContinueDemo {
public static void main(String[] args) {
String searchMe = "peter piper picked a " + "peck of pickled peppers";
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
// interested only in p's
if (searchMe.charAt(i) != 'p')
continue;
// process p's
numPs++;
}
System.out.println("Found " + numPs + " p's in the string.");
}
}
class ContinueDemo{
公共静态void main(字符串[]args){
String searchMe=“彼得·派珀挑选了一“+”啄腌辣椒”;
int max=searchMe.length();
int numPs=0;
对于(int i=0;i
在上面的示例中,如果例如searchMe.charAt(5)!='p'
然后循环将从i=6的循环开始继续,并且numPs++代码>将不被处理
您可以在此处阅读更多关于此的信息:
基本上,在Java中没有实用的方法来实现这一点。您似乎正在尝试执行“goto”的等效操作,而Java不支持这种操作。break label
和continue label
语句只能分支到封闭的带标签语句
现在,根据Java形式语法,您可以编写以下内容:
s: {
continue s;
System.out.println("I am not supposed to print this");
}
System.out.println("I am suppose to print this");
但这仍然无法编译,原因有二:
- continue只允许分支到循环语句上的标签。(A
break
没有该限制…但是…)
continue
(或break
)使下一条语句无法访问
另见:
但有一种相当棘手的方法可以让代码“工作”:
编译器将对那里的“测试”进行评估,以便中断
实际上是无条件的。但是JLS说第一个println
将被视为可访问的,这样您就不会出现无法访问的代码错误
如果您正在生成此源代码,我想这可能很有用。除此之外,这只是一个好奇心。使用常规的if
/else
语句执行此操作更简单。。。或者完全删除第一个“print”。理论上,Java有跳跃语句return
和break
return
语句跳出方法,无论是否向调用语句返回值
break
语句跳出循环
正如前面的回答中提到的,goto
在Java中不可用,在过程式或面向对象编程中被认为不是一种好的编程实践。它早在顺序编程时代就存在了。Java不支持GOTO
(以及类似的功能)。坦率地说,我认为GOTO
会让代码变得混乱。
static final boolean flag = true; // class attribute ...
...
s: {
if (flag) break s;
System.out.println("I am not supposed to print this");
}
System.out.println("I am suppose to print this");