如何用JAVA修复我的循环代码?
我正试图使它,如果人键入任何其他除了“宝马”或“奥迪”,他们会被送回点,他们得到重新键入,我是一个初学者编码,所以请解释,如果可能的话:3谢谢!对不起,如果我的代码是混乱的仍然是新的这和工作 编辑:非常感谢大家的帮助:3如何用JAVA修复我的循环代码?,java,loops,Java,Loops,我正试图使它,如果人键入任何其他除了“宝马”或“奥迪”,他们会被送回点,他们得到重新键入,我是一个初学者编码,所以请解释,如果可能的话:3谢谢!对不起,如果我的代码是混乱的仍然是新的这和工作 编辑:非常感谢大家的帮助:3 import java.util.Scanner; class MyClass { public static void main(String[ ] args) { Vehicle V1 = new Vehicle(); Vehicle V2 = new Vehi
import java.util.Scanner;
class MyClass {
public static void main(String[ ] args) {
Vehicle V1 = new Vehicle();
Vehicle V2 = new Vehicle();
//Vehicle 1 (BMW)
V1.setColour("Blue");
V1.setFuel(56);
V1.setWheels(3);
V1.setMaxSpeed(150);
//Vehicle 2 (AUDI)
V2.setColour("Red");
V2.setFuel(59);
//Wheels and Max speed are on default...
System.out.println("Choose from Audi or BMW");
Scanner input = new Scanner(System.in);
String q = input.next();
while(q.equalsIgnoreCase("BMW") || q.equalsIgnoreCase("AUDI")){
if (q.equalsIgnoreCase("BMW")){ // Prints BMW Car Specifications
System.out.println("Here is the latest BMW Car specifications:");
System.out.println("Colour: " + V1.getColour());
System.out.println("Fuel Capacity: " + V1.getFuel() + " Liters");
System.out.println("Wheel count: " + V1.getWheels());
System.out.println("Maximum Speed: " + V1.getMaxSpeed() + " KM/H");
break;
}else if(q.equalsIgnoreCase("AUDI")){ //Prints AUDI Car Specifications
System.out.println("Here is the latest AUDI Car specifications:");
System.out.println("Colour: " + V2.getColour());
System.out.println("Fuel Capacity: " + V2.getFuel() + " Liters");
System.out.println("Wheel count: " + V2.getWheels());
System.out.println("Maximum Speed: " + V2.getMaxSpeed() + " KM/H");
break;
}else{
System.out.println("Sorry that is not a car manufacturer listed (AUDI/BMW)");
}
}
}
}
您需要询问用户,直到他输入一个正确的单词。所以你必须这样做:
String q = input.next();
while(!q.equalsIgnoreCase("BMW") && !q.equalsIgnoreCase("AUDI")){
q = input.next();
}
之后,您可以根据用户输入的内容打印出有关奥迪或宝马的信息。您需要将if和else if语句排除在循环之外,然后重新打印 用户如果不是宝马或奥迪,则在环路外测试字符串
int car=0;
while(car==0)
{
if(q.equalsIgnoreCase("BMW")||q.equalsIgnoreCase("AUDI"))
car++;
else
{
System.out.println("Sorry that is not a car manufacturer listed (AUDI/BMW)");
System.out.println("Choose from Audi or BMW");
q = input.next();
}
}
if (q.equalsIgnoreCase("BMW")){ // Prints BMW Car Specifications
System.out.println("Here is the latest BMW Car specifications:");
System.out.println("Colour: " + V1.getColour());
System.out.println("Fuel Capacity: " + V1.getFuel() + " Liters");
System.out.println("Wheel count: " + V1.getWheels());
System.out.println("Maximum Speed: " + V1.getMaxSpeed() + " KM/H");
}else if(q.equalsIgnoreCase("AUDI")){ //Prints AUDI Car Specifications
System.out.println("Here is the latest AUDI Car specifications:");
System.out.println("Colour: " + V2.getColour());
System.out.println("Fuel Capacity: " + V2.getFuel() + " Liters");
System.out.println("Wheel count: " + V2.getWheels());
System.out.println("Maximum Speed: " + V2.getMaxSpeed() + " KM/H");
}
您从未将新字符串分配给
q
,因此您希望循环如何工作?另外,break
只要退出循环,就不会从循环中得到任何输入。在循环中变量将如何变化?它将如何结束?哇,伙计们对我放轻松xD,谢谢tho,你能给我一些关于如何修复/改进代码的建议吗,比如编辑代码?因为我知道,但我不知道P.S没有提到还有另一个类文件。你需要q不是宝马,q不是奥迪,不是或。事实上,任何输入都无法通过该循环。例如,如果输入为“BMW”
,则它不等于“AUDI”
,因此循环条件的第二部分为true
,而整个循环条件为true
,因此循环继续。@ChaiT.Rex字符串值不能同时包含两个值,例如BMW和AUDI,您所说的&&是什么意思?你的意思是它必须包含宝马和奥迪?不,我的意思是当循环继续时,它应该既不包含宝马也不包含奥迪。当两者都不是时,您就有了!宝马&!奥迪
。请参见中的示例,其中使用|
会导致无限循环(第二个循环永远不会完成)。@ChaiT.Rex此处我编辑了我的答案请参见我的正确答案我添加了逻辑