2014-01-21 77 views
0

我有两个问题:我的代码将不会运行,但没有错误

  1. 为什么我的程序运行?
  2. 我该如何检查输入是否与某些 有什么不同?

-

import java.util.Random; 
import java.util.Scanner; 

public class HeigherOrLower { 

     //Creates the scanner. 
    static Scanner sc = new Scanner(System.in); 
    static String input = sc.nextLine(); 

    public static void main(String[] args) 
    { 
     //Creating the two random numbers. 
     Random rand = new Random(); 
     int userNumber = rand.nextInt(10) + 1; 
     int comNumber = rand.nextInt(10) + 1; 

     System.out.println("Your number is: " + userNumber +" of 10"); 
     System.out.println("Do you think that your number is Heigher(H), Lower(L) or Equal To(E) the computers number"); 

      //Checking if the user is right. 
     if(userNumber < comNumber && input.equals("L")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 

     if(userNumber == comNumber && input.equals("E")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 

     if(userNumber > comNumber && input.equals("H")) 
       System.out.println("You are right. The computer's number is: " + comNumber); 
    } 
} 
+0

你如何运行它? –

+11

你认为'static String input = sc.nextLine();'是做什么的? –

+0

调试你的代码,你会发现问题比提问更快。 – Salah

回答

-1

您可以检查您是否已经命名自己的文件作为HeigherOrLower.java否则它相应重命名,谢谢!

+0

这是一个疯狂的猜测。是什么让你觉得这可能是问题? – Keppil

0

它将运行在

static String input = sc.nextLine(); 

等待用户输入,我认为你不能当你在Eclipse中运行它,观察控制台。查看进程列表中是否存在java进程

0

它运行良好,但它在输出任何文本之前等待用户输入。在“您认为...”行之后,您可能需要将两条静态行移动到主方法中:

import java.util.Random; 
import java.util.Scanner; 


public class HeigherOrLower 
{ 

    public static void main(String[] args) 
    { 
     //Creating the two random numbers. 
     Random rand = new Random(); 
     int userNumber = rand.nextInt(10) + 1; 
     int comNumber = rand.nextInt(10) + 1; 

     System.out.println("Your number is: " + userNumber +" of 10"); 
     System.out.println("Do you think that your number is Heigher(H), Lower(L) or Equal To(E) the computers number"); 

     //Creates the scanner. 
     Scanner sc = new Scanner(System.in); 
     String input = sc.nextLine(); 

     //Checking if the user is right. 
     if(userNumber < comNumber && input.equals("L")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 

     if(userNumber == comNumber && input.equals("E")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 

     if(userNumber > comNumber && input.equals("H")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 
    } 
} 

静态初始化程序在main方法之前执行。所以,在输出任何东西之前,它都在等待输入,给人的印象是什么都没有发生。

要检查字符串值是否不相等,请使用非运算符“!”如下所示:

if (! input.equals("H")) 

对于数值,只要使用=如下所示:

if (x != 3) 
0

你的程序做“RUN”那只是你没有任何prmpots == >> System.out.println(“请输入您的输入”)///或任何其他类型的提示消息来通知用户。至于你的扫描仪,我删除了无效修饰符“静态”,并转移到您的主类。至于逻辑,我不知道它应该做什么。

 public class HeigherOrLower { 

    //Creates the scanner. 


    public static void main(String[] args) 
    { 

     System.out.println("Please type your input"); 
     Scanner sc = new Scanner(System.in); 
     String input = sc.nextLine(); 
    //Creating the two random numbers. 
    Random rand = new Random(); 
    int userNumber = rand.nextInt(10) + 1; 
    int comNumber = rand.nextInt(10) + 1; 

    System.out.println("Your number is: " + userNumber +" of 10"); 
    System.out.println("Do you think that your number is Heigher(H), Lower(L) or Equal To(E) the computers number"); 

     //Checking if the user is right. 
    if(userNumber < comNumber && input.equals("L")) 
     System.out.println("You are right. The computer's number is: " + comNumber); 

    if(userNumber == comNumber && input.equals("E")) 
     System.out.println("You are right. The computer's number is: " + comNumber); 

    if(userNumber > comNumber && input.equals("H")) 
      System.out.println("You are right. The computer's number is: " + comNumber); 




     } 
    } 
0

这两条线:

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

执行以下操作:

  • 构造使用标准输入一个新的Scanner
  • Scanner
阅读第一线

由于这不是在一个方法内部声明的,所以当你运行该程序时,这种情况非常正确(我不会将你与技术问题混淆)。

因此,它在等待输出任何内容之前读取输入。

所以你也许想要把那两个语句,与static删除,main方法里面,这行之后可能:

System.out.println("Do you think that your number is Heigher(H), Lower(L) or Equal To(E) the computers number"); 

如果这不是问题,你可能确实不运行它完全可以,你必须提供更多关于你如何运行它的细节。

要检查您输入不等于什么东西,你可以只说!input.equals("something")(if语句里面,!这里的意思是“不”),或者您可以使用else

if (input.equals("something")) 
    System.out.println("It's equal"); 
else 
    System.out.println("It's not equal"); 
相关问题