我正在为课程编程工作,我们正在查看提供的示例代码,该代码将每日收入用于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
答案 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) 将此字符串拆分为给定正则表达式的匹配项。
(下次阅读文档)