2016-09-25 44 views
1

我是新來的java和很新的使用循環,到目前爲止,我一直在爲我的課做一個程序,檢查用戶是否輸入隨機生成的正確數字的變體的程序,但它說lotteryNumberString循環開始後無法找到。有關如何解決它的任何提示?如何使用'for'循環檢查輸入中的某些數字?

import java.util.Scanner; 
    public class Lottery 
    { 
    public static void main(String[] args) 
    { 
    Scanner input = new Scanner(System.in); 

    for(int i=0; i < 3; i++) 
    { 
     double lotto = Math.random(); 
     int lotteryNumberDigit = (int)(lotto*10); 

     String lotteryNumberString = Integer.toString(lotteryNumberDigit); 

     } 



      String firstNumber = lotteryNumberString.substring(0,0); 
      String secondNumber = lotteryNumberString.substring(1,1); 
      String thirdNumber = lotteryNumberString.substring(2,2); 

      String firstTwoWinner = firstNumber + secondNumber; 
      String lastTwoWinner = secondNumber + thirdNumber; 
      String allNumbersWinner = firstNumber + secondNumber + thirdNumber; 

      System.out.println("Please enter your three numbers (e.g. 123): "); 

      String userInput = input.next(); 

      if(userInput.substring(0,2).equals(firstTwoWinner)) 

     { 
      System.out.println("Winner: " + allNumbersWinner); 

      System.out.println("Congratulations, the front pair matched."); 
     } 

     else if (userInput.substring(1,3).equals(lastTwoWinner)) 
     { 
      System.out.println("Winner: " + allNumbersWinner); 

      System.out.println("Congratulations, the end pair matched."); 
     } 

     else if (userInput.equals(allNumbersWinner)) 
     { 
      System.out.println("Winner: " + allNumbersWinner); 

      System.out.println("Congratulations, both pairs matched."); 
     } 

     else 
     { 
      System.out.println("Winner: " + allNumbersWinner); 

      System.out.println("Sorry, no matches. You only had one chance out of 100 to win anyway."); 
     } 



    } 
} 
+0

請您再次接受答案,相信系統有一些問題它會自動接受答案。在此先感謝 – mhasan

回答

1

看一看這篇文章:http://www.java-made-easy.com/variable-scope.html。您面臨的問題與lotteryNumberString變量的作用域(生命週期)有關。如果在循環中聲明,它不在循環之外。要解決此問題,請在for循環之前聲明lotteryNumberString

0

問題是一個編譯問題..因爲lotterNumberString僅在for循環中有作用域,所以它在外面不可見。 你可能需要做這樣的事情。

import java.util.Scanner; 
public class Lottery 
{ 
public static void main(String[] args) 
{ 
Scanner input = new Scanner(System.in); 
String lotteryNumberString = null; 
for(int i=0; i < 3; i++) 
{ 
    double lotto = Math.random(); 
    int lotteryNumberDigit = (int)(lotto*10); 

    lotteryNumberString = Integer.toString(lotteryNumberDigit); 

    } 



     String firstNumber = lotteryNumberString.substring(0,0); 
     String secondNumber = lotteryNumberString.substring(1,1); 
     String thirdNumber = lotteryNumberString.substring(2,2); 

     String firstTwoWinner = firstNumber + secondNumber; 
     String lastTwoWinner = secondNumber + thirdNumber; 
     String allNumbersWinner = firstNumber + secondNumber + thirdNumber; 

     System.out.println("Please enter your three numbers (e.g. 123): "); 

     String userInput = input.next(); 

     if(userInput.substring(0,2).equals(firstTwoWinner)) 

    { 
     System.out.println("Winner: " + allNumbersWinner); 

     System.out.println("Congratulations, the front pair matched."); 
    } 

    else if (userInput.substring(1,3).equals(lastTwoWinner)) 
    { 
     System.out.println("Winner: " + allNumbersWinner); 

     System.out.println("Congratulations, the end pair matched."); 
    } 

    else if (userInput.equals(allNumbersWinner)) 
    { 
     System.out.println("Winner: " + allNumbersWinner); 

     System.out.println("Congratulations, both pairs matched."); 
    } 

    else 
    { 
     System.out.println("Winner: " + allNumbersWinner); 

     System.out.println("Sorry, no matches. You only had one chance out of 100 to win anyway."); 
    } 



} 
+0

你覺得在接受相同的代碼後,我看到你沒有接受答案的任何問題 – mhasan