0

我是 Java 编程语言的新手。我一直在while用 s 练习循环语句,String但我似乎无法正确编写此代码。我一直收到错误:

变量选择可能尚未初始化

import java.util.Scanner;

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

 int a, b,c, diff, prod, q, choice;
 String name;
 String choose;


 System.out.print("Enter Name Please:       \t");
 name = sc.next();

 System.out.println("WELCOME  " + name);
 System.out.println("");

while (choose == "Y");
{
 System.out.println("1. Addition  \t2. Subtraction \t3. Multiplication \t4. Division");
 System.out.println("Please Choose a number: \t");
 choice = sc.nextInt();

 switch (choice)
 {
   case 1:
       System.out.println("Thank You "+name+", you have chosen ADDITION");
       System.out.print("\nPlease Enter the first number: \t");
       a = sc.nextInt();
       System.out.print("\nPlease Enter the Second number: \t");
       b = sc.nextInt();

       c = a + b;

       System.out.println("\nYou have chosen "+a+ " as your first number, we will add it to "+b+" your second number.");
       System.out.println("\nThe answer is "+c);

       System.out.println("\nWould you like to choose again? Y/N: \t");
       choose = sc.next();

       break;
4

6 回答 6

2

在将变量choose设置为初始值之前使用它。在循环中使用它之前,您永远不会分配choose任何值。while

while在循环之前添加以下语句:

choose = sc.next();

当然,您需要为最终用户提供适当的消息。

此外,您的比较不正确 - 使用choose.equals("Y")or choose.equalsIgnoreCase("Y"),因为您不将对象与==.

[编辑]:回顾你的代码,你的while循环无论如何都会被破坏。从它的末尾删除分号。这样,它会在您期望的时候进入循环。

于 2013-10-14T02:45:18.757 回答
1

这是编译器内置的安全网,它抱怨在您的 while 语句中使用 String select 之前可能没有声明它。将其声明为“”,您就可以开始了。

String choose = "";

希望这可以帮助!欢迎来到 Java!

于 2013-10-14T02:46:19.620 回答
0

你需要初始化choose,也就是在声明的时候给它赋值。也许你可以这样做 - String choose = "Y"。正如其他人所提到的,使用equalsIgnoreCase("Y")会更好。

于 2014-07-15T22:54:16.703 回答
0

您没有为 variable 分配任何值choose

于 2013-10-14T02:46:50.430 回答
0

更改String choose;为此String choose = "";将初始化字符串选择。

于 2013-10-14T02:46:55.253 回答
0

变量选择没有被初始化为一个值,只是被声明了。也许你想要String select = "Y"; ? 也许您希望在输入名称后使用Scanner进行另一个用户输入?

于 2013-10-14T02:47:11.997 回答