扫描仪需要/请求输入两次

时间:2013-09-19 13:46:42

标签: java string input

我只是在编写一个小程序,它接收来自用户的输入然后将其打印回来。然而,当我运行程序时,它要求输入两次(它打印初始语句,然后一旦你输入并按回车键,没有任何反应,但如果你再次这样做它工作和打印。)最高值显然没有重量或意思是,因为它没有显示出来,但第二个值确实打印得很好。

package kek;
import java.util.Scanner;

public class Kek {

    public static void main (String[] args){
        Scanner input = new Scanner(System.in);

        System.out.println("What is kek? (Top, bottom, etc.)");
        String s1 = input.next();
        if (input.hasNext("kek")) {
            System.out.println("No.");
            System.exit(0);
        } else {
            System.out.println(s1 + "kek");
            input.close();
        }
    }
}

这是控制台:

What is kek? (Top, bottom, etc.)
top
top
topkek

What is kek? (Top, bottom, etc.)
kek
kek
No.

我正在使用eclipse kepler。

5 个答案:

答案 0 :(得分:1)

不确定但这是你的意思吗?

public static void main(String[] args) {
    System.out.println("What is kek? (Top, bottom, etc.)");

    Scanner input = new Scanner(System.in);
    String string = input.nextLine();

    if(string.equals("kek")){
        System.out.println("No.");
        System.exit(0);
    }else{
        System.out.println(string + "kek");
        input.close();        
    }    
}

如果没有,那么您需要更具体地了解您要实现的目标。从你现在所写的内容来看,你真正想要的是什么

答案 1 :(得分:1)

您要求next()hasNext()两次输入。请改为:

package kek;

import java.util.Scanner;

public class Kek {
    public static void main (String[] args){

        Scanner input = new Scanner(System.in);
        System.out.println("What is kek? (Top, bottom, etc.)");
        String s1 = input.next();
        //just compare strings using the .equals() method instead
        //of using the hasNext() which will ask for another input
        if ("kek".equals(s1)) {
            System.out.println("No.");
            System.exit(0);
        }
        else{
            System.out.println(s1 + "kek");
            input.close();
        }
    }
}

答案 2 :(得分:0)

删除代码中的input.next();并使用。 input.next();获取输入,has.next()获取其他输入

答案 3 :(得分:0)

您首先在s1中读取一个值,然后告诉Scanner在其中某处找到值为"kek"另一个行。也许你的意思是说if(input.equals("kek"))

答案 4 :(得分:0)

我遇到了完全相同的问题,但是当我输入' no'或者'不是......我不确定为什么只有' no'区域受到影响。

import java.util.Scanner;

public class Methods2 {

static Scanner userInput = new Scanner(System.in);

static String answer;
static int yes1no2;
static int loopStage = 1;

public static void main(String[] args)
{
    System.out.println("Welcome to the bank.\nWould you like to open an account?");
    while (loopStage == 1)
    {
        if (yesOrNo() == 1)
        {
            loopStage = 2;
            System.out.println("Great.");
        }
            else if (yesOrNo() == 2)
        {
            System.out.println("Ok, please come again.");
        }
    }
}
public static int yesOrNo()
{
    answer = userInput.nextLine();
    if (answer.equalsIgnoreCase("yes"))
    {
        yes1no2 = 1;
    }
    else if (answer.equalsIgnoreCase("no"))
    {
        yes1no2 = 2;
    }
    else
    {
        yes1no2 = 3;
        System.out.println("Please say 'Yes' or 'No'.");
    }
    return yes1no2;
}

}