String [] s = t.split("")是什么意思/做什么?

时间:2015-01-29 17:09:48

标签: java

我正在为课程编程工作,我们正在查看提供的示例代码,该代码将每日收入用于4周并打印出收益最高的那一天。该程序使用dat文件读取信息并打印结果。我想了解的是String [] s = t.split("")到底是做什么的?它似乎不是一个数组..

数据文件

4
1300 1500 1200 1600 1800 900 1400
1200 1400 1500 1600 1100 1450 1475
1745 2534 2000 2100 2400 1975 1823
2231 1992 2000 2345 2435 1982 2500

数据文件中的第一个数字列出了要遵循的行数(周数)。之后的每一行包含7个数字,每个数字与星期日 - 星期六的星期几相关。

练习集的主要代码。我为每一行添加了评论,以充分解释我的问题。

我不理解的是String []s = t.split(" ");

import java.io.*;
import java.util.*;
import static java.lang.System.*;  


public class BestDay {


    public static void main(String args[]) throws IOException
    {
        Scanner kb = new Scanner(new File("bestday.dat"));  //Imports File

        int count = 0; //Basic Counter for While loop
        int totalWeeks = Integer.parseInt(kb.nextLine().trim()); //Number of Weeks from First Line of Data File (4)
        while(count < totalWeeks) {    //Runs While loop as long as times is greater than count 
            count++; //Increments Count     

            String t = kb.nextLine().trim(); // pulls in the next line as a string and trims blank spaces
            String []s = t.split(" "); //Not Sure what is happening here) Someone Explain pls. 
            int most = Integer.parseInt(s[0]); //Takes each number and registers it as Int
            int day = 0; //Sets an int for later comparison
            for(int i=1; i<7; i++) { //for loop runs 7 times one for each day of the week for every 1 while loop run
                int next = Integer.parseInt(s[i]); //brings in each other integer. 
                if (next > most) {// compares it 
                    most=next; //If next is more than most then sets most to next
                    day=i; //sets day to i basically telling which day was the highest value on
                }
            }
            switch (day) {
                case 0: out.println("SUNDAY"); break; //looks at each case with Day and prints out the right case.
                case 1: out.println("MONDAY"); break;
                case 2: out.println("TUESDAY"); break;
                case 3: out.println("WEDNESDAY"); break;
                case 4: out.println("THURSDAY"); break;
                case 5: out.println("FRIDAY"); break;
                case 6: out.println("SATURDAY"); break;
            }
        }
    }

}

预期产出

THURSDAY
WEDNESDAY
MONDAY
SATURDAY

4 个答案:

答案 0 :(得分:3)

来自Javadocs for String.split(String)

  

将此字符串拆分为给定正则表达式的匹配项。

本质上,它将目标字符串标记为单独的字符串,这些字符串由参数正则表达式连接。

例如:

"foo bar gah".split(" "); // => { "foo", "bar", "gah" }
"Mississipian".split("i"); // => { "M", "ss", "ss", "pp", "an" }

答案 1 :(得分:2)

请参阅String.split的文档:它使用regular expression拆分字符串。具体而言(根据文档):

  

围绕给定正则表达式的匹配拆分此字符串。

     

此方法的工作方式就像调用带有给定表达式和limit参数为零的双参数split方法一样。因此,结尾的空字符串不包含在结果数组中。

在这种情况下,它只是从指定模式(在本例中为1300 1500 1200 1600 1800 900 1400)中的文件(例如" ")中拆分一行,并返回单个字符串的数组。 e.g。

{"1300", "1500", "1200", "1600", "1800", "900", "1400"}

任何“这个java函数做什么”问题的第一个调用端口应该是http://docs.oracle.com/javase/7/docs/api/overview-summary.html上的java文档

答案 2 :(得分:0)

查看官方java文档here

小剪辑:

String[] parts = "123   156";    
String[] parts = string.split("   ");

parts将是一个包含"123""456"字符串的2个元素的数组。作为输入传递的参数由split方法用于匹配给定的正则表达式(在我的示例中为简单的标记字符串)。

答案 3 :(得分:0)

String.split使用分隔符拆分给定的字符串并将其存储在数组中。在你的情况下,它的空间。所以在第二行使用它会为你提供这个数组s [] = {1300,1500,1200,1600,1800,900,1400}

来自javadoc String.split(String regex) 将此字符串拆分为给定正则表达式的匹配项。

(下次阅读文档)