2017-05-19 76 views
0

我想创建一个循环,将采取字符串值并将它们转换为int值。 这里是一个例子字符串2012.12.31 我想要的是杀死循环,一旦它到达“。” 我们将假设所有的字符串将只包含2个“。”。在他们中。这是我开始的,我被困住了。有人能指导我使用什么吗? 我是一个java学习者,所以我甚至不知道在这种情况下可以使用的所有系统命令。这是我想如何去做的。如何从字符串中获取数值,并使用for循环将它们转换为int?

DateSettings (String A){ 
    int YYYY, MM, DD; 

    for (int i=0; i<A.indexOf('.'); i++);{ 
     YYYY = A[i]; 
    } 

} 
+2

这分号for'循环paranthesis后'将是痛苦的沿后; ) – gonczor

+2

@gonczor实际上,这是不会编译的,因为变量'i'在循环范围之外使用;)(没有提及在字符串上使用'[]'' – AxelH

回答

1

我会去与String.split

String s = "2012.12.31"; 
String array[] = s.split("\\."); 
int year = Integer.parseInt(array[0]); 
//and so on 

此外,还有一个;你的循环,这可能导致该问题,与事实,你不更新字符串

+0

正如在评论中所说,';'会阻止代码编译,因为'我'不会存在于该块语句 – AxelH

+0

感谢您的帮助,这个答案看起来是最好的,因为它很简单,不需要循环欢呼 –

1

有一个类(java.text.SimpleDateFormat)为您解析字符串日期。

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

public class StringToDateExample1 { 

    public static void main(String[] args)throws Exception { 
    String sDate1="2016.12.31"; 

    Date date1=new SimpleDateFormat("yyyy.MM.dd").parse(sDate1); 
    Calendar instance = Calendar.getInstance(); 
    instance.setTime(date1); 
    System.out.println("Year: " +instance.get(Calendar.YEAR)); 
    System.out.println("Month: " +(instance.get(Calendar.MONTH)+1)); 
    System.out.println("Day: " +instance.get(Calendar.DAY_OF_MONTH)); 
    } 
} 

此输出:

Year: 2016 
Month: 12 
Day: 31 

另一种解决方案是使用Pattern.compile("\\.")

List<Integer> collect = Pattern.compile("\\.") 
    .splitAsStream(sDate1) 
    .map(Integer::parseInt) 
    .collect(Collectors.toList()); 
+0

OP的格式具体是一个句点' .'所以我不确定是否有一个格式使用... – ItamarG3

+0

@ItamarGreen感谢您的建议 – freedev

+0

没有任何问题;) – ItamarG3

1

您可以使用子:

String yearString = A.substring(0,A.indexOf('.')); 
int yyyy = Integer.parseInt(yearString);//will error if the string isn't only numbers. 
相关问题