而Loop,Strings

时间:2013-10-14 02:41:30

标签: java while-loop

我是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;

6 个答案:

答案 0 :(得分:2)

在将变量设置为初始值之前,请使用变量choose。在choose循环中使用{/ 1}}之前,您不会为其分配while任何值。

while循环之前添加此语句:

choose = sc.next();

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

此外,您的比较不正确 - 使用choose.equals("Y")choose.equalsIgnoreCase("Y"),因为您don't compare objects with ==

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

答案 1 :(得分:1)

这是一个内置于编译器中的安全网,它抱怨在您的while语句中使用String选项之前可能尚未声明它。将其声明为""而且你会很高兴。

String choose = "";

希望这有帮助!欢迎来到Java!

答案 2 :(得分:0)

您没有为变量choose分配任何值。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

变量选择未初始化为某个值,只是被声明。也许你想要 String choose =“Y”; ?输入名称后,您可能希望使用扫描仪进行其他用户输入吗?

答案 5 :(得分:0)

您需要初始化选择,即在声明时为其指定值。也许你可以这样做 - String choose = "Y"。正如其他人所提到的,使用equalsIgnoreCase("Y")会更好。