我收到了一个文件,其中包含姓名电话号码,来电和外出电话等等......就像这样
Adams#Marilyn#8233331109#0#0#01012014#C
Anderson#John#5025559980#20#15#12152013#M
Baker-Brown#Angelica#9021329944#0#3#02112014#C
#是数据项之间的分隔符,每行都将呼叫状态作为最后一项。 我需要知道如何在屏幕上以如下格式显示每个人的信息:
姓名电话呼叫最后呼叫中的呼叫
玛丽莲亚当斯(823)333-1109 0 0 01-01-2104
John Anderson(502)555-9980 20 15 12-15-2013
Angelica Baker-Brown(859)254-1109 11 5 02-11-2014
我必须使用substring方法来提取电话号码并添加括号/短划线等...
到目前为止,我的代码看起来像这样 我也是初学Java编码类....
import java.util.Scanner;
import java.io.*;
public class phonedata2_1 {
public static void main(String[] args) throws IOException {
String Phonefile, FirstName, LastName;
Scanner PhoneScan, fileScan;
System.out.println(" Name Phone Calls Out Calls In Last Call Status");
fileScan = new Scanner(new File("phonedata.txt"));
while (fileScan.hasNext()) {
Phonefile = fileScan.nextLine();
PhoneScan = new Scanner(Phonefile);
PhoneScan.useDelimiter("#");
System.out.println(PhoneScan.next() + " "
+ PhoneScan.next() + "\t"
+ PhoneScan.next() + "\t"
+ PhoneScan.next() + "\t"
+ PhoneScan.next() + "\t"
+ PhoneScan.next() + "\t"
+ PhoneScan.next());
}
System.out.println("\nTotal outgoing calls for the period: " + "\nTotal incoming calls for the period: \n");
}
}
答案 0 :(得分:0)
您可以使用.split(String regex)
分割您正在阅读的行,方法是将#
作为分隔符。这将生成一个数组,您可以相应地遍历和打印内容。此外,似乎除了初始行之外,所有调用数据都以开头,因此您可以使用拆分两次来解析文本文件:
编辑:看到你的评论,我也意识到,之后,因为.split()
方法将正则表达式作为参数,这意味着可以毫不费力地走动这个问题。我的例子如下:
String str = "Adams#Marilyn#8233331109#0#0#01012014#C Anderson#John#5025559980#20#15#12152013#M Baker-Brown#Angelica#9021329944#0#3#02112014#C";
String[] lines = str.split(" ");
System.out.println("Name\tPhone\tCalls\tOut\tCalls In\tLast Call");
for(String line : lines)
{
String[] lineInfo = line.split("#");
for(String info : lineInfo)
{
System.out.print(info + "\t");
}
System.out.println();
}
我必须手动添加一些额外的标签,但这是输出:
Name Phone Calls Out Calls In Last Call
Adams Marilyn 8233331109 0 0 01012014 C
Anderson John 5025559980 20 15 12152013 M
Baker-Brown Angelica 9021329944 0 3 02112014 C
答案 1 :(得分:0)
这样的事情应该有效。您仍然需要自己对电话号码进行所有操作,但所有数据都将出现在电话信息中,以便您可以从中进行操作!
while (fileScan.hasNext())
{
//Get a single record
Phonefile = fileScan.nextLine();
//Seperate the elements of the record
String[] callInfo = Phonefile.split("#");
for(String infoPart: callInfo)
{
System.out.print(infoPart+ "\t");
}
System.out.println()
}
答案 2 :(得分:0)
使用正则表达式查找每个“数据段”,然后使用#作为分隔符将其拆分并打印出来:
File blub = new File("blub.txt");
Scanner scanner = null;
try
{
scanner = new Scanner(blub);
}
catch (FileNotFoundException e){}
while(scanner.hasNext("((\\S*)#){6}(\\w)"))
{
String buffer = scanner.next("((\\S*)#){6}(\\w)");
for(String value : buffer.split("#"))
System.out.print(value + " ");
System.out.println();
}
<强>输出:强>
Adams Marilyn 8233331109 0 0 01012014 C
Anderson John 5025559980 20 15 12152013 M
Baker-Brown Angelica 9021329944 0 3 02112014 C
注意:强> 您可以使用任何空白字符来分隔输入文件中的每个数据段,因此即使空格也可以或制表符(或者与空行混合等等)。
进一步使用数据:
您可以在arraylist中添加数据,因为buffer.split(“#”)为您提供了一个数据段数组,因此您可以更容易地输出每个值所需的更改(或以不同的顺序)