Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不带数组的字符位置正确_Java_String_Random - Fatal编程技术网

Java 不带数组的字符位置正确

Java 不带数组的字符位置正确,java,string,random,Java,String,Random,我正在为一个智囊团类型的游戏编写java代码,在这个游戏中,计算机生成一个随机的4位数,而不是颜色,供玩家求解。如果猜测不正确,则应指示猜测的数字在生成的随机数的正确位置。这是我的密码: import java.util.Scanner; import java.util.Random; import java.lang.String; public class CSCD210HW2 { public static final int MAX = 10; public static

我正在为一个智囊团类型的游戏编写java代码,在这个游戏中,计算机生成一个随机的4位数,而不是颜色,供玩家求解。如果猜测不正确,则应指示猜测的数字在生成的随机数的正确位置。这是我的密码:

import java.util.Scanner;
import java.util.Random;
import java.lang.String;

public class CSCD210HW2
{
   public static final int MAX = 10;
   public static void main(String [] args)
   {
      int nums, guess, countMe;
      String userChoice;
      boolean tryAgain = false;
      boolean reDo = false;
      Scanner kb = new Scanner(System.in);
      Random rand = new Random();
      String ans = null;
      do
      {
         reDo = false;
         nums = rand.nextInt(9999 - 1000) + 1000;
         countMe=0;
         do
         {
         System.out.print("Enter Four Digit Guess: ");
         guess = kb.nextInt();
         countMe++;
         while(guess < 1000 || guess > 9999)
         {
            System.out.print("I SAID 4 DIGITS! Try Again: ");
            guess = kb.nextInt();

         }
         if(nums < guess)
         {
            System.out.println("Your Guess Was Too High.");
            System.out.println("Guesses Left: "+(MAX-countMe));

         }

         else if(nums > guess)
         {
            System.out.println("Your Guess Was Too Low.");
            System.out.println("Guesses Left: "+(MAX-countMe));


         }
         if(nums == guess)
         {
            System.out.print("Congratulations! Computer Bust!");

         }

      }while(guess != nums && countMe < MAX);
      System.out.println(" Game Over! The Number Was: "+nums);
      System.out.print("Try Again? ");
      userChoice = kb.next();
      while(!userChoice.equalsIgnoreCase("yes") && !userChoice.equalsIgnoreCase("no"))
      {
         System.out.print("It's Quite Simple. YES or NO: ");
         userChoice = kb.next();
      }
      if(userChoice.equalsIgnoreCase("YES"))
      {
         reDo = true;
      }
      }while(reDo);
   }//end main
}//end TheClass
import java.util.Scanner;
导入java.util.Random;
导入java.lang.String;
公共类CSCD210HW2
{
公共静态最终整数最大值=10;
公共静态void main(字符串[]args)
{
整数、猜测、计数;
字符串用户选择;
布尔值tryAgain=false;
布尔重做=假;
扫描仪kb=新扫描仪(System.in);
Random rand=新的Random();
字符串ans=null;
做
{
重做=假;
nums=rand.nextInt(9999-1000)+1000;
countMe=0;
做
{
System.out.print(“输入四位数猜测:”);
guess=kb.nextInt();
countMe++;
而(猜测<1000 | |猜测>9999)
{
System.out.print(“我说的是4位数字!再试一次:”);
guess=kb.nextInt();
}
if(nums猜测)
{
System.out.println(“你的猜测太低了。”);
System.out.println(“左猜测:+(MAX countMe));
}
如果(nums==猜测)
{
系统输出打印(“恭喜!电脑崩溃!”);
}
}while(guess!=nums&&countMe

我唯一的问题是数字在正确的位置。我知道它可以通过使用数组来完成,但我还不习惯使用这些数组,所以我不想这样做。我还能怎么做呢

像这样一个粗略而简单的检查将起作用:

if ((nums / 1000) == (guess / 1000)) System.out.print("Num 1 matches");
if (((nums % 1000) / 100) == ((guess % 1000) / 100)) System.out.print("Num 2 matches");
if (((nums % 100) / 10) == ((guess % 100) / 10)) System.out.print("Num 3 matches");
if ((nums % 10) == (guess % 10)) System.out.print("Num 4 matches");

显然,这是丑陋的,可以做得更好,但它说明了这一点。整数除法修剪余数,因此
1234/1000
为您提供
1
。模(
%
)为您提供余数(因此
1234%1000
结果为
234
)。将这两者结合起来,您可以在
nums
guess
中获得每个位置的单个整数,并对它们进行比较。

您将更轻松地使用数组来实现这一点,并且您将受益于对极其重要的数据结构的更多了解。如果你死心避免数组,你可以将数字转换成4个字符的字符串,然后根据位置检查字符串中的元素。但这种方法在概念上与处理数组类似!