Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中打印连接字符串时出现问题_Java - Fatal编程技术网

在Java中打印连接字符串时出现问题

在Java中打印连接字符串时出现问题,java,Java,系统会提示用户逐行输入员工数据的值。我选择扫描整行数据,然后将每段数据分隔成一个字符串数组(用空格分隔)。我创建了变量fullName并连接了员工的名字和姓氏,但当我打印代码时,它只显示姓氏。我已经对此进行了大约三个小时的故障排除,没有发现任何语法或逻辑错误,为什么不打印全名 \ import java.util.Scanner; 导入java.util.ArrayList; 导入java.util.Collections; /** *员工记录类 * *@Theodore Mazer *@ve

系统会提示用户逐行输入员工数据的值。我选择扫描整行数据,然后将每段数据分隔成一个字符串数组(用空格分隔)。我创建了变量fullName并连接了员工的名字和姓氏,但当我打印代码时,它只显示姓氏。我已经对此进行了大约三个小时的故障排除,没有发现任何语法或逻辑错误,为什么不打印全名

\

import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.Collections;
/**
*员工记录类
* 
*@Theodore Mazer
*@version 9/8/15
*/
公共类雇员记录
{
ArrayList name=新的ArrayList();
ArrayList taxIDs=新的ArrayList();
ArrayList工资=新ArrayList();
私有字符串employeeId=“%03d”;
私人出租车;
私人双小时工资=0.0;
公共ArrayList getNamesArrayList(){//getter方法用于员工姓名
返回姓名;
}
公共ArrayList GetTaxidArrayList(){//tax ID的getter方法
回程的士;
}
public ArrayList getWagesArrayList(){//getter小时工资方法
退还工资;
}
public void setEmployeeData(){//用于员工数据输入的setter方法
扫描仪扫描=新扫描仪(System.in);
字符串firstName=“”;
字符串lastName=“”;
字符串信息=”;
System.out.println(“每次按Enter键输入每个员工的全名、税号和小时工资。(输入$key完成)”;
而(!(scan.next().equals($)){
info=scan.nextLine();
String[]splitString=info.split(“”);
字符串fullName=“”;
firstName=splitString[0];
lastName=splitString[1];
fullName=firstName+“”+lastName;
double-hWage=double.parseDouble(splitString[3]);
名称。添加(全名);
taxIDs.add(splitString[2]);
工资。添加(hWage);
}
System.out.println(“员工ID |员工全名|税务ID |工资”);

对于(int i=0;i,在
条件下,当您使用
next()
消耗下一个标记时,在您的情况下,它是第一个名称

我将对while循环进行两个修改:

while (scan.hasNext()) { // <-- check if there's a next token (without consuming it)
    info = scan.nextLine();
    if (info.trim().equals("$")){ // <-- break if the user wants to quit
        break;
    }
    String[] splitString = info.split("\\s+"); // split on any amount/kind of space using regex-split
    String fullName = "";
    firstName = splitString[0];
    lastName = splitString[1];
    System.out.println(Arrays.toString(splitString));
    fullName = firstName + " " + lastName;
    double hWage = Double.parseDouble(splitString[3]);
    names.add(fullName);
    taxIDs.add(splitString[2]);
    wages.add(hWage);
}

while(scan.hasNext()){//Java是一种面向对象的语言。不要使用并行数组/列表来存储单个对象的属性。用字段定义一个类(本例中有3个字段),然后创建这些对象的单个列表。它适用于从“”到“\\s+”的更改,并且我也同意添加.trim语句是一种比我以前拥有的更加可靠的方法。非常感谢!
while (scan.hasNext()) { // <-- check if there's a next token (without consuming it)
    info = scan.nextLine();
    if (info.trim().equals("$")){ // <-- break if the user wants to quit
        break;
    }
    String[] splitString = info.split("\\s+"); // split on any amount/kind of space using regex-split
    String fullName = "";
    firstName = splitString[0];
    lastName = splitString[1];
    System.out.println(Arrays.toString(splitString));
    fullName = firstName + " " + lastName;
    double hWage = Double.parseDouble(splitString[3]);
    names.add(fullName);
    taxIDs.add(splitString[2]);
    wages.add(hWage);
}