通过扫描仪输入创建对象

如何解决通过扫描仪输入创建对象

import java.util.Scanner;

public class PhoneBook {
    
    private Address[] addresses;
    private String[] phoneNumbers;
    private Person[] people;
    
    public static void startMenu() {
        
        
    }

    
    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        Scanner intScan = new Scanner(System.in);
    
        String menu = ("Please Make A selection Below: \n1 - Add new Record"
                + " \n2 - Delete Record "
                + "\n3 - Find Record By Telephone Number "
                + "\n4 - Find Record By First Name "
                + "\n5 - Find Record By Last Name"
                + "\n6 - Update a Record"
                + "\n7 - Exit");
        
        int selection;
        String inputString;
        do {
            System.out.println(menu);
            selection = intScan.nextInt();
            Entry[] entry5 = new Entry[0];
            Entry tempEntry = null;
            switch (selection) {
            case 1: 
                System.out.println("Please enter a new record as John Michael West Doe,574 Pole ave,St. Peter,MO,63303,3142752000");
            
                inputString = input.nextLine();
// creating a new obj ref variable
                tempEntry = new Entry(inputString);
                // calling the method on the obj ref variable

                tempEntry.addEntry(inputString);
                System.out.println(tempEntry.toString());
                System.out.println(menu);
                break;
                
            
            case 2:
                
                // method to remove record 
                
                break;
                
            case 3:
                
                // method 
                
                break;
                
            case 4:
                
                break;
                
            case 5:
            
                break;
                
            case 6:
                
                break;
                
            case 7:
                
                break;
            }
            
            }       while (selection != 11);

}

}

当我将对象引用变量设置为新的Entry时,我试图弄清楚为什么我的对象没有创建。我还为tempEntry对象引用变量调用.addEntry方法,并成功传递了扫描器输入。我只是将'null null null'打印到控制台。但这不会让我输入参数。

tempEntry = new Entry();
tempEntry.addEntry(inputString);

我还试图在传入新记录时向Entry []数组添加1,但似乎也找不到解决办法。 我不确定应该在哪里放置

tempEntry = new Entry(inputString);

Entry[] entry5 = new Entry[0];

但是,我一直在移动它们并运行代码。有什么想法吗?这是我的输入类中的添加输入方法:

import java.util.Scanner;

public class Entry {
    
    private Name newName;
    private Address address;
    private Phone phone;
    public String string;
    
    
    public Entry(Name newName,Address address,Phone phone) {
        this.newName = newName;
        this.address = address;
        this.phone = phone;
    }
    
    public Entry(String string) {
        this.string = string;
    }
    
    public Entry() {
        
    }
    
    
    
    public Name getName() {
        return this.newName;
    }
    
    public Address getAddress() {
        return this.address;
    }
    
    public Phone getPhone() {
        return this.phone;
    }
    
    public void setName(Name newName) {
        this.newName = newName;
    }
    
    public void setAddress(Address address) {
        this.address = address;
    }
    
    public void setPhone(Phone phone) {
        this.phone = phone;
    }

    **// add entry method 
    public Entry addEntry(String input) {
        String name,street,city,state,zipCode,phoneNumber;
        name = "";
        street = "";
        city = "";
        state = "";
        zipCode = "";
        phoneNumber = "";
        
        String[] arr = input.split(",");
        
        name = arr[0];
        street = arr[1].trim();
        city = arr[2].trim();
        state = arr[3].trim();
        zipCode = arr[4].trim();
        phoneNumber = arr[5].trim();
        
        Name fullName = splitName(name); 
        Address address = makeAddress(street,zipCode);
        Phone phoneNum = makePhone(phoneNumber);
        
        Entry entry1 = new Entry(fullName,address,phoneNum);
        return entry1;
    }**
    
    // split name method 
    public static Name splitName(String name) {
        String fName,mName,lName;
        fName = "";
        mName = "";
        mName = "";
        String [] names = name.split(" ");
        
        fName = names[0];
        
        for (int i = 1; i < names.length - 1; i++) {
            mName += names[i];
            if (i != names.length - 1) {
                mName += " ";
            }
        }
        
        lName = names[names.length - 1];
        
        Name name1 = new Name(fName,lName);
        return name1;
    }
    
    // Address method 
    public static Address makeAddress(String street,String city,String state,String zipCode) {
        Address address1 = new Address(street,zipCode);
        return address1;
    }
    
    // Phone method 
    public static Phone makePhone(String phoneNumber) {
        String area,prefix,line;
        
        area = phoneNumber.substring(0,3);
        prefix = phoneNumber.substring(3,6);
        line = phoneNumber.substring(6);
        
        Phone phone1 = new Phone(area,line);
        return phone1;
    }
    
    
    
    
    
    @Override
    public String toString() {
        return this.newName + " " + this.address + " " + this.phone;
    }

}

解决方法

您可以删除addEntry()函数,并获取该函数中的所有代码,然后将其移至Entry(String string)构造函数中。除了最后两行。只需删除那些。

public Entry(String input)
{
    String[] arr = input.split(",");
    
    if (arr.length < 6) {
        throw new IllegalArgumentException();
    }

    newName = splitName(arr[0]);
    address = makeAddress(arr[1].trim(),arr[2].trim(),arr[3].trim(),arr[4].trim());
    phone = makePhone(arr[5].trim());
}

然后在主代码中:

case 1: 
    System.out.println("Please enter a new record as John Michael West Doe,574 Pole ave,St. Peter,MO,63303,3142752000");
    inputString = input.nextLine();
    tempEntry = new Entry(inputString);
    System.out.println(tempEntry.toString());
    System.out.println(menu);
    break;

请注意,这不会向数组添加任何内容。如果要先执行此操作,则必须正确声明数组并设置正确的索引:

//Entry[] entry5 = new Entry[0]; <- creates a zero-length array
Entry[] entry5 = new Entry[5];   // creates array with room for 5 items
int index = 0;   // Where to add the next item
....
case 1: 
    System.out.println("Please enter a new record as John Michael West Doe,3142752000");
    inputString = input.nextLine();
    entry5[index] = new Entry(inputString);
    System.out.println(entry5[index].toString());
    index += 1;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res