2016-09-25 3 views
1

Ich bin neu in Java und sehr neu zu verwenden Schleifen, bisher habe ich an einem Problem für meine Klasse zu einem Programm, das überprüft, ob der Benutzer eine Variation der richtigen Zahlen zufällig generiert, aber es sagt, dass lottoNumberString kann nicht gefunden werden, sobald die Schleife beginnt. Irgendwelche Tipps, wie man es beheben kann?Wie verwende ich eine 'for'-Schleife, um nach bestimmten Ziffern in einem Eingang zu suchen?

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

Können Sie bitte die Antwort erneut akzeptieren, glaube System hatte ein Problem, es hat automatisch die Antwort nicht akzeptiert. Vielen Dank im Voraus – mhasan

Antwort

1

einen Blick auf diesen Artikel nehmen: http://www.java-made-easy.com/variable-scope.html. Das Problem, mit dem Sie konfrontiert sind, hat mit dem Umfang (Lebensdauer) der lotteryNumberString-Variable zu tun. Es existiert nicht außerhalb der Schleife, wenn Sie innerhalb der Schleife deklarieren. Um dies zu beheben, deklarieren Sie lotteryNumberString vor der for-Schleife

0

Problem ist ein Kompilierungsproblem .. weil Ihr lotterNumberString nur innerhalb der for-Schleife beschränkt ist, so dass es außerhalb nicht sichtbar ist. Sie müssen möglicherweise so etwas tun.

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

Haben Sie irgendein Problem im Code gespürt? Ich habe gesehen, dass Sie die Antwort nach Annahme des gleichen nicht akzeptiert haben – mhasan

Verwandte Themen