Java 为什么我的代码永远不会结束?我删除了for循环
在我的一次代码运行中,它进入了一个无限循环。我正在使用,因此当我单击“运行”时,不会显示任何内容 我以前有一个for循环,但问题仍然存在,尽管我删除了它。到目前为止,我已经输入了一个名称并创建了Java 为什么我的代码永远不会结束?我删除了for循环,java,time,infinite,Java,Time,Infinite,在我的一次代码运行中,它进入了一个无限循环。我正在使用,因此当我单击“运行”时,不会显示任何内容 我以前有一个for循环,但问题仍然存在,尽管我删除了它。到目前为止,我已经输入了一个名称并创建了bo_b、fo_f和mo_m变量 import java.util.Scanner; public class Main { static String input; public static void main(String[] args) { Scanner ke
bo_b
、fo_f
和mo_m
变量
import java.util.Scanner;
public class Main {
static String input;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("What is your name? ");
String input = keyboard.nextLine();
input = input.toLowerCase();
System.out.println("Input: " + input);
String name = Song(input);
System.out.println(name);
}
public static String Song(String str) {
String bo_b = "";
String fo_f = "";
String mo_m = "";
int a = 0;
/* for (int i = 0; i < str.length(); i++) {
a += i;
i = 0;
int i = 0; */
System.out.println(str);
System.out.println("a: " + a + "; i: " + i);
if (!(Character.isLetter(str.charAt(i)))) {
System.out.println("Only letters are alowed");
System.exit(0);
} else if (((str.substring(0, 1)).equals("a") || (str.substring(0, 1)).equals("e") || (str.substring(0, 1)).equals("i") || (str.substring(0, 1)).equals("o") || (str.substring(0, 1)).equals("u"))) {
break;
} else {
str = str.substring(a + 1);
System.out.println("AFTER: " + str);
a -= 1;
}
bo_b = "Bo-B" + str;
fo_f = "Fo-F" + str;
mo_m = "Mo-M" + str;
str = Character.toUpperCase(str.charAt(0)) + str.substring(1);
String result = new String(str + ", " + str + " " + bo_b + ", " + "Bonana Fanna " + fo_f + ", " + "Fe fi "
+ mo_m + ", " + str);
return result;
}
}
}
import java.util.Scanner;
公共班机{
静态字符串输入;
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“你叫什么名字?”);
字符串输入=键盘.nextLine();
input=input.toLowerCase();
System.out.println(“输入:”+输入);
字符串名称=歌曲(输入);
System.out.println(名称);
}
公共静态字符串歌曲(字符串str){
字符串bo_b=“”;
字符串fo_f=“”;
字符串mo_m=“”;
int a=0;
/*对于(int i=0;i
很抱歉,冒充了我所有的代码,因为我不知道错误是从哪里来的
我希望代码检查字符串开头的字符。请注意,我还没有完成这个项目。这段代码的目标是获取名称输入,并将其插入Shirley Ellis的“名称游戏”(Bonana、fanna等)中
public class NameGame {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("What is your name? ");
String input = keyboard.nextLine();
input = input.toLowerCase();
System.out.println("Input: " + input);
String name = Song(input);
System.out.println(name);
}
static String Song(String str) {
String bo_b = "";
String fo_f = "";
String mo_m = "";
int a = 0;
for(int i =0;i<str.length();i++) {
a += i;
System.out.println(str);
System.out.println("a: " + a + "; i: " + i);
if (!(Character.isLetter(str.charAt(i)))) {
System.out.println("Only letters are allowed");
System.exit(0);
} else if ((str.substring(0, 1)).equals("a") ||
(str.substring(0, 1)).equals("e") ||
(str.substring(0, 1)).equals("i") ||
(str.substring(0, 1)).equals("o") ||
(str.substring(0, 1)).equals("u")) {
break;
} else{
str = str.substring(a + 1);
System.out.println("AFTER: " + str);
a -= 1;
}
bo_b = "Bo-B" + str;
fo_f = "Fo-F" + str;
mo_m = "Mo-M" + str;
str = Character.toUpperCase(str.charAt(0)) + str.substring(1);
}
return str + ", " + str + " " + bo_b + ", " + "Bonana Fanna " + fo_f + ", " + "Fe fi " + mo_m + ", " + str;
}
这只会将循环重置回i=0,从而导致无限循环。我改了。更改后的代码有效。但是,我不确定您想要实现什么。如果您没有使用for循环,则
else If((str.substring(0,1)).equals(“a”)|(str.substring(0,1)).equals(“e”)|(str.substring(0,1)).equals(“I”)|(str.substring(0,1)).equals(“I”)|(str.substring(0,1)).equals(“o”)|”)(str.substring(0,1)).equals(“u”){break;}
没有意义。编译失败,因为在循环或开关之外不能有中断。因此,您仍然在运行旧编译的类文件,该类文件仍然具有for循环。它永远不会结束,因为它永远不会开始运行。:-)另外,由于i
是在for
中声明的,因此在删除循环时,此行不会编译:System.out.println(“a:+a+”;i:+i)代码>。我尝试了不同的重新引入循环的变体,但每次它都会终止,从而导致方法无法到达它必须返回的任何return
语句。无论如何都要尝试回答:在循环内将循环控制变量
i`设置为零可能是防止其结束的一种方法。这也使得代码非常复杂,很难分辨,所以永远不要这样做编码>并注释掉中断代码>和循环结束时的}
,您的代码在我的计算机上运行良好,确实打印了一个很好的结果,并且很好地终止。
i = 0;
int i = 0;