Java:数字游戏只显示两个玩家

时间:2015-10-02 08:06:54

标签: java

我创造了一个数字猜谜游戏。该程序允许您播放任意数量的轮次,最后它将显示每轮的猜测次数。但是,我的程序只为两个玩家提供输出......这是代码:

import javax.swing.*;
import java.io.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class Hil0 {
    public static void main(String[]args) throws IOException {   

    List<String> highscore = new LinkedList<String>(Arrays.asList());

    while(true) {

     String namn = JOptionPane.showInputDialog(null, "Välj namn");
     int a = Integer.parseInt(JOptionPane.showInputDialog(null, "Mellan       0 och vilket tal vill du gissa?"));         

     int slumptal = 1 + (int)(Math.random()*a);
     int counter = 0;
     int count = 0;

     count++;
     String output = "";

     while(true) {         
     counter++;   

        String inputStr = JOptionPane.showInputDialog(null, "Gissa vilket tal (0-" + a +")");
        int input = Integer.parseInt(inputStr);

        if(input < slumptal) {
        JOptionPane.showMessageDialog(null, "Talet: " + input + " är för litet");      
        }
        else if(input > slumptal) {
        JOptionPane.showMessageDialog(null, "Talet: " + input + " är för stort");    
        }
        else if(input == slumptal) {
           highscore.add(namn + " " + counter + " gissningar" + " (0-" + a + ")");

           JOptionPane.showMessageDialog(null, "Rätt!" + "\n" + 
                                               "Antal gissningar: " + 
                                               counter);                                                                                                 

           String janej = JOptionPane.showInputDialog(null, "Vill du spela igen?");

           if(janej.equalsIgnoreCase("ja")) {
              break;               
           }
           else if(janej.equalsIgnoreCase("nej")) {
              for(int i = 0; i <= count; i++) { 
              output += highscore.get(i) + "\n";
              }
              JOptionPane.showMessageDialog(null,"Resultat:" + "\n\n" + output);
              System.exit(0);              
           }                                                                                              
        }
      }
    }    
  }  //Main
}  //Class

1 个答案:

答案 0 :(得分:0)

可能是因为每个循环中的变量count等于1.尝试将其替换为while loop范围。

看起来像这样:

import javax.swing.*;
import java.io.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class Hil0 {
    public static void main(String[]args) throws IOException {   

    List<String> highscore = new LinkedList<String>(Arrays.asList());
    int count = 0; // put it here instead 

    while(true) {

     String namn = JOptionPane.showInputDialog(null, "Välj namn");
       int a = Integer.parseInt(JOptionPane.showInputDialog(null, "Mellan       0 och vilket tal vill du gissa?"));         

     int slumptal = 1 + (int)(Math.random()*a);
     int counter = 0; 
    // int count = 0; move it out of while

     count++;
     String output = "";

     while(true) {         
     counter++;   

        String inputStr = JOptionPane.showInputDialog(null, "Gissa vilket tal (0-" + a +")");
        int input = Integer.parseInt(inputStr);

        if(input < slumptal) {
        JOptionPane.showMessageDialog(null, "Talet: " + input + " är för litet");      
        }
        else if(input > slumptal) {
        JOptionPane.showMessageDialog(null, "Talet: " + input + " är för stort");    
        }
        else if(input == slumptal) {
           highscore.add(namn + " " + counter + " gissningar" + " (0-" + a + ")");

           JOptionPane.showMessageDialog(null, "Rätt!" + "\n" + 
                                               "Antal gissningar: " + 
                                               counter);                                                                                                 

           String janej = JOptionPane.showInputDialog(null, "Vill du spela igen?");

           if(janej.equalsIgnoreCase("ja")) {
              break;               
           }
           else if(janej.equalsIgnoreCase("nej")) {
              for(int i = 0; i < count; i++) { // use < insetad of <= because you count from 0
              output += highscore.get(i) + "\n";
              }
              JOptionPane.showMessageDialog(null,"Resultat:" + "\n\n" + output);
              System.exit(0);              
           }                                                                                              
        }
     }
  }    
 } 
}