import java.util.Scanner;
import java.util.*;
public class MultipicationTable{
public static void main(String[] args)
{
// Initialising selection variable to 0
int selection = 0;
int MultiValue = 0;
int UserValue = 0;
// Initializing the count for loop
int i;
// Initializing Random1 and Random2 to get random values
int Random1;
int Random2;
// Creating new Scanner
Scanner input = new Scanner(System.in);
do{
// Menu to select type of multipication
System.out.println("Please select your option");
System.out.println("1: Random Multipication table");
System.out.println("2: Give your own numbers");
// Getting the input from the above menu
selection = input.nextInt();
switch (selection)
{
case 1:
Random1 = (int)(Math.random() * 1000);
Random2 = (int)(Math.random() * 1000);
Random1 = Random1/10;
System.out.println("You Random Value to pultiply is " + Random1);
System.out.println("How long do you want? 2 - 100 ");
MultiValue = input.nextInt();
for (i = 1; i <= MultiValue; i++ )
{
System.out.println("Multipication of " + Random1 + " * " + i + " is: " + Random1 * i);
}
case 2:
System.out.println("What is your Number? ");
UserValue = input.nextInt();
System.out.println("How long do you want to multiply? ");
MultiValue = input.nextInt();
for (i = 1; i <= MultiValue; i++ )
{
System.out.println("Multipication of " + UserValue + " * " + i + " is: " + UserValue * i);
}
}
System.out.println("Would you like to exit? ");
String Exit = input.nextLine();
}while(Exit != 'y');
}
}
Run Code Online (Sandbox Code Playgroud)
我认为我的错误出在代码的这一部分。
System.out.println("Would you like to exit? ");
String Exit = input.nextLine();
}while(Exit != 'y');
Run Code Online (Sandbox Code Playgroud)
我收到类似“无法解决退出”的错误消息。我的目标是循环直到用户输入y该问题。
首先,whileordo...while循环中的条件在外部作用域内。这意味着do...while在检查条件时,在 的块内声明的任何变量不再在范围内。为了解决这个问题,你需要exit在do...while循环之外声明你的变量:
String Exit = null;
do {
// do something
Exit = input.nextLine();
} while (Exit != 'y');
Run Code Online (Sandbox Code Playgroud)
但是,此代码仍将无法编译,因为Exit被声明为 aString但您正在将其与'y'which is a进行比较char。字符串文字总是被双引号包围,字符串也是如此"y"。
现在将条件更改为Exit != "y"将编译,但不会按预期运行。您需要String使用该equals()方法比较s 。这意味着条件应该是!Exit.equals("y")。将它放在while条件中应该可以解决循环的问题。
或者,如果您想检查单词“是”或变体,您可以使用while(Exit.charAt(0) != 'y');. 这会检查第一个字符Exit是否为 'y' 字符。