gpt4 book ai didi

java - 为什么会发生这种无限循环?

转载 作者:行者123 更新时间:2023-11-29 04:56:04 25 4
gpt4 key购买 nike

伙计们,我真的需要一些帮助:(

我需要创建一个联系人列表,我需要能够在其中创建、编辑、删除、显示和搜索联系人。

但是在我输入数字 1(包括一个新数字)并输入名称和数字后,它进入了一个无限循环,我想知道你们是否可以帮助我弄清楚为什么会发生这种情况以及如何解决它。

我很确定它与代码末尾的这个 block 有关:

while (op!=6)
System.out.println();

但是当我删除它时,循环就不会发生。它不是无限循环,而是根本不循环。我已经尝试了几个小时,但我似乎根本无法弄清楚。(我也不允许在这里使用数组列表)

对不起我的英语,已经谢谢你了!

import java.util.Scanner;

public class Vetor45 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

String[] name = new String[1000];
String nname, auxname;
int[] tel = new int[1000];
int ntel, op, cont, i, k, auxtel;

cont = 0;
k = 0;

for (i = 0; i < 1000; i++) {
name[i] = "Empty";
tel[i] = 0;
}

{

System.out.println("contact list:");
System.out.println("1. include a new number");
System.out.println("2. edit a number");
System.out.println("3. delete a number");
System.out.println("4. print all numbers");
System.out.println("5. search by name");
System.out.println("6. exit");
System.out.println("Option:");

op = scanner.nextInt();

System.out.println("");

if (op == 1) {
if (k <= 999) {
while (name[k] != "Empty") {
k++;
}

System.out.println("Enter a name:");
name[k] = scanner.next();

System.out.println("Enter a number:");
tel[k] = scanner.nextInt();
k++;
}

else {
System.out.println("complete");
}
}

else {
if (op == 2) {
i = 0;
System.out.println("enter a name:");
nname = scanner.next();

while (nname != name[i] && i < k - 1) {
i++;
}

if (nname == name[i]) {
System.out.println("enter the new number:");
ntel = scanner.nextInt();
tel[i] = ntel;
}

else {
System.out.println("name not registred");
}

}

else {
if (op == 3) {
k--;
i = 0;
System.out.println("enter a name:");
nname = scanner.next();

while (nname != name[i] && i < k) {
i++;
}

if (nname == name[i]) {
name[i] = "Empty";
tel[i] = 0;
} else {
System.out.println("name not registred");
}

}

else {

if (op == 4) {
for (i = 0; i <= k - 2; i++) {
for (cont = i + 1; cont <= k - 1; cont++) {
if (name[i] == name[cont]) {
auxname = name[i];
name[i] = name[cont];
name[cont] = auxname;
auxtel = tel[i];
tel[i] = tel[cont];
tel[cont] = auxtel;
}
}
}

System.out.println("phone list:");
for (i = 0; i < 1000; i++) {
if (name[i] != "Empty") {
System.out.println("name: " + name[i]);
System.out.println("tel: " + tel[i]);
}

}
}

else {
if (op == 5) {
i = 0;
System.out.println("enter a name:");
nname = scanner.next();
while (nname != name[i] && i < k) {
i++;
}

if (nname == name[i]) {
System.out.println("name: " + nname);
System.out.println("Tel: " + tel);
} else {
System.out.println("name not registred");
}
} else {
if (op == 6) {
System.out.println("exiting");
} else {
System.out.println("option not available");
}
}
}
}
}
}
System.out.println();
}

while (op != 6)
System.out.println();
}
}

最佳答案

这段代码中甚至没有 do/while 循环,这是 do/while 循环的样子:

  do{
//loop
}while(op != 6); //don't forget semi colon

您需要为牙套等制定一些标准。就目前而言,这段代码真的很难阅读。

关于java - 为什么会发生这种无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com