关于使用Scanner类创建类,设置方法和String数据类型的问题

时间:2014-03-26 03:02:47

标签: java string mutators

所以我正在编写一个小程序来练习我的考试,它涉及创建一个类文件和一个应用程序文件。基本上,我不确定我的设置是否可行,因为Scanner类需要用户输入,并且我不知道类似于nextInt()或nextDouble()的字符串方法方法。这是我到目前为止所写的内容的片段,我基本上想知道当我需要接受用户输入时,我如何使用set方法(我的一些set方法使用字符串而不是原始数据)类型如int或double)。只是好奇我的当前格式是否可以在我进入应用程序类后工作,或者我是否需要更改我的方法以使用数字输入而不是字符串然后使用类似开关或if语句之类的东西来更改这些数值到一个字符串。以下是我迄今为止写的类文件:

import java.text.DecimalFormat;

public class GuitarStore
{

   DecimalFormat dollar = new DecimalFormat("$#,##0.00");

   private int stockNumber;
   private int modelID;
   private int pickupType;
   private String color;
   private String brand;
   private String pickupType
   private double totalValueOfStock;

   public GuitarStore()
   {

   stockNumber = 0;
   modelID = 0;
   pickupID = 0;
   color = "";
   brand = "";
   pickupType = "";
   totalValueOfStock = 0.0;

   }

   public GuitarStore(int stkNum, int modID, int pickID, String clor, String brnd,
                      double totValOfStock)

   {

   setStock(stkNum);
   setModel(modID);
   setPickup(pickID);
   setColor(clor);
   setBrand(brnd);
   setTotalValue(totValOfStock); 

   }

   public void setStock(stkNum)
   {

      if (stkNum > 1 && stkNum <= 500)
      {
            stockNumber = stkNum;
      }

      else 
      {
            stockNumber = 0;
      } 
   }

   public void setModel(modID)
   {
      if (modID >= 1 && modID <= 1000)
      {      
            modelID = modID;
      }

      else                      
      {
        modelID = 0;
      }
   } 

   public void setPickup(pickID)
   {
      if (pickID > 1 && pickID <= 3)
      {
            pickupID = pickID;
      }

      else
      {
            pickupID = 0;
      }
   }  

   public void setColor(clor)
   {
      if (clor == "red") 
            color = clor;
      else if (clor == "blue")
            color = clor;
      else if (clor == "purple")
            color = clor;
      else if (clor == "green")
            color = clor;
      else if (clor == "white")
            color = clor;
      else
            System.out.println("We do not carry that color");

基本上,我对setColor方法最感兴趣,一旦到达程序的应用程序部分,它是否/如何工作。在之前的项目中,我只使用数字而不是字符串,然后使用switch语句将其转换为字符串。这对我来说是一个全新的东西,我正试着尝试新事物。由于我需要用户输入来确定他们想要的颜色,我不知道如何解析它,因为我不能像上面所说的那样使用像nextDouble()或nextInt()这样的方法。这是完全的练习,所以如果有人能告诉我我是否有一个可靠的计划我很欣赏它,以及在我进入设置方法的申请流程后我应该做些什么来接受用户输入。谢谢,这里的每个人总是很有帮助! :)

1 个答案:

答案 0 :(得分:1)

Scanner确实有一个next方法,它不管类型如何都会读取令牌,并将其作为字符串返回,以及nextLine方法,它可以满足您的期望。一般情况下,我建议使用nextnextLine而非nextInt以及其他特定于类型的方法,因为如果输入不完全正确,您可能会遇到一些意外行为。< / p>

此外,您不应该将两个字符串与==运算符进行比较。在Java中,==是一个引用(或浅层)比较,它基本上检查两个对象是否存储在计算机上的同一位置;这适用于原始类型(整数,双数等),因为它们在语言中的表示方式。它不适用于Strings,因为Strings是Java中的复杂对象。相反,您应该使用equals方法进行深入比较 - 检查所有数据是否相同。