Java:无限循环中的扫描仪输入

时间:2018-06-07 19:42:09

标签: java java.util.scanner infinite-loop

我目前正在尝试制作一个简单的程序来测试字符串中的某些字符是否是他们想要的位置。例如' /'在正常的mm / dd / yy格式内。但由于某种原因,我甚至无法通过扫描仪输入,因为它只是不断要求输入。我已经四处搜索,可以找到任何有我确切问题的人,考虑到这只是一个独立的扫描仪。我对Java非常陌生,所以我认为这是我的一个简单错误,但我似乎无法弄明白并且不想浪费时间比我已经浪费的时间更多。

import java.util.Scanner;
public class Main {


    public static Character req = '/'; 

    public static boolean datecheck(String d){
        String hold = d; 
        String[] a = new String[1];
        Character one = hold.charAt(2);
        Character two = hold.charAt(5); 

        //check to make sure the "/" are where they need to be
        if(one.equals(req)&&two.equals(req)){
        return true; 
        }
        else
            return false; 
    }



public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner(System.in);
    System.out.println("welcome to the BrightSide Scheduler "
            + "\nplease input the day you wish to schedule:");
    String date = input.next();
    input.close();
    try{
    datecheck(date);
    }catch (NullPointerException e){
        System.out.println("didnt work");
    }

    if (datecheck(date)==true){
        System.out.print("Success");
    }
    else{
        System.out.println("fail");
    }
}

}

1 个答案:

答案 0 :(得分:0)

我已经在我的代码中用原始问题编辑了一些评论,然后再问这个问题以节省一些眼睛。它位于下面的代码块中。在我到达程序的那一部分之前,我决定不使用LinkedList和大量注释的导入。并且显然删除所有额外的东西允许我的程序工作,但我不完全确定为什么......

所以下面是重新创建的问题,我已经修改了我自己的问题只是通过编辑我的评论和导入我想。

import java.util.LinkedList;
import java.util.Scanner;
public class Main {



/*public class Date {
private String day;
private String month;
private String year; 


public Date(String day, String month, String year){
    this.day = day;
    this.month = month;
    this.year = year;

}
public String getDay() {
    return day;
}
public String getMonth(){
    return month;
}
public String getYear(){
    return year; 
}

//String[] options = new String[15]; 
}*/

public static Character req = '/'; 

public static boolean datecheck(String d){
    String hold = d; 
    String[] a = new String[1];
    Character one = hold.charAt(2);
    Character two = hold.charAt(5);
    //take user input an search through the string at to make sure it is 
    //formated correctly, then return true to continue the scheduler
    for(int x = -1; x<5; x = x+ 3){
        while(x != -1){
            int n = 0; 
            a[n] = hold.substring(x,x+1);
            n++;
        }

    }
    //check to make sure the "/" are where they need to be
    if(one.equals(req)&&two.equals(req)){
    return true; 
    }
    else
        return false; 
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner(System.in);
    System.out.println("welcome to the BrightSide Scheduler "
            + "\nplease input the day you wish to schedule:");
    String date = input.next();
    input.close();
    try{
    datecheck(date);
    }catch (NullPointerException e){
        System.out.println("didnt work");
    }

    if (datecheck(date)==true){
        System.out.print("Success");
    }
    else{
        System.out.println("fail");
    }
}

}

这是我的控制台的样子: console img