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

标签 java string mutators

所以我正在编写一个小程序来练习即将到来的考试,它涉及创建一个类文件和一个应用程序文件。基本上,我不确定我的设置是否有效,因为 Scanner 类需要用户输入,并且我不知道类似于 nextInt() 或 nextDouble() 方法的字符串方法。这是我到目前为止所写的内容的片段,我基本上想知道当我需要接受用户输入时如何使我正在使用的 set 方法起作用(我的一些 set 方法使用字符串而不是原始数据类型,例如int 或 double)。只是好奇一旦我接触到应用程序类,我当前的格式是否可以工作,或者我是否需要更改我的方法以使用数字输入而不是字符串,然后稍后使用 switch 或 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() 这样的方法。这是完全的练习,所以如果有人能告诉我我是否有一个可靠的计划,我会很感激,以及一旦我进入设置方法的应用程序过程,我应该做什么来获取用户输入。谢谢,这里的每个人总是那么乐于助人! :)

最佳答案

Scanner 确实有一个 next 方法,它读取 token (无论类型如何)并将其作为字符串返回,以及 nextLine方法,它会达到您的期望。一般来说,我建议使用 nextnextLine 而不是 nextInt 和其他特定于类型的方法,因为如果输入不完全正确。

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

关于java - 关于使用 Scanner 类创建类、设置方法和 String 数据类型的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650690/

相关文章:

java - 该方法是修改器还是访问器方法?

java - 返回泛型父类(super class)

java - "Removing"char 数组 java 中的重复空格

c - 通过用户输入操作 C 中的字符串

java - 如何在没有参数和参数的方法之间传递变量

c++ - 这会被视为访问器吗? (C++)

java - JMapViewer居中

java - 如何更改交互式代理中的时区?

java - 从 ChangeEvent 访问 GWT TextBox 中的文本

Python:将具有unicode of namedtuple的字符串形式转换为namedtuple