提示用户输入值,直到连续三次输入相同的值

时间:2017-10-26 01:37:05

标签: java

我有关于循环的问题。基本上程序围绕提示用户输入整数,直到输入三个相同的整数,但问题是如果我在开头输入一个不同的整数然后输入三个相同的整数我不能让我的程序接受它作为行中三个相似的整数..

这是一个实际问题:编写一个Java程序,提示用户一次一个地从键盘输入整数。一旦用户连续三次输入相同的值(意味着连续三次,一个接一个),程序将停止读取整数。输入完成后,程序将显示消息“相同输入3连续 输出:

  

输入一个整数:77
  输入一个整数:56
  输入一个整数:56
  输入一个整数:78
  输入一个整数:56
  输入一个整数:22
  输入一个整数:22
  输入一个整数:22

     

输入相同的整数值三次

我无法正确获得上述输出。任何人都可以帮助我...

这是我尝试的相同程序:

import java.util.Scanner;

public class Naim5c
{
   public static void main(String args[])
   {
       Scanner input = new Scanner(System.in);
       int count = 0;
       int a,b,c;
       do{
          System.out.println("enter an integer");
          a = input.nextInt();
          System.out.println("enter an integer");
          b = input.nextInt();
          System.out.println("enter an integer");
          c = input.nextInt();
          if(a==b)
          {
             if(b==c)
             {
                System.out.println("Same integer entered thrice");
             }
          }

          else if (b==c) 
          {
             System.out.println("enter an integer");
             a = input.nextInt();
             if(c==a)
             {
                System.out.println("Same integer entered thrice");
             }       
          }
          //System.out.println("enter an integer");
          //a = input.nextInt();
          else if (c==a)
          {
             System.out.println("enter an integer");
             b = input.nextInt();
             if( a==b )
             {
                System.out.println("Same integer entered thrice");
             }       
          }
       }while(a!=b && b!=c);
    }
 }

4 个答案:

答案 0 :(得分:1)

从它的外观(至少根据你)来看,你需要检测用户连续三次输入三个相同值的整数,而不是整个输入周期。您真正需要的只是一个计数器变量和另一个整数变量来保存先前输入的值。像这样:

Scanner input = new Scanner(System.in);
int a;  // To hold User's current entry value.
int count = 0;  // To hold the number of times the same value was entered.
int prevInt = 0;  // To hold the value previously entered.
do{
    // Since we're in a loop we only need to have
    // a single prompt.
    System.out.print("Enter an integer: --> ");
    a = input.nextInt();   // Get User Input
    // Is User entry equal to what what entered
    // previously?
    if (a == prevInt) { 
        // Yes it is...
        count++;    // Increment our counter
        // if our counter reaches 3 then let's
        // break out of our do/loop.
        if (count == 3) { break; }
        // Otherwise let's continue the loop from
        // the start.
        continue; 
    }
    // Nope, not equal to the User's last entry so
    // let's make prevInt hold the Users new entry.
    prevInt = a;
    // Let's reset our counter to 1. We need to set
    // to 1 because the last User's input which is 
    // now held in prevInt is the actual first entry
    // for the new integer value.
    count = 1;
} while(count < 3);  // Keep looping if our counter is less than 3

// Display that a triple entry was made.
System.out.println("Same integer (" + a + ") entered thrice");

答案 1 :(得分:0)

您不需要三个变量。只有一个用于记住最后一个int的变量和一个用于记录你看过最后一个整数的次数的计数器变量。

  

     int count = 0;
     Integer prevInt = null;
     do {
         System.out.println("enter an integer");
         int i = input.nextInt();
         if (prevInt == null || i != prevInt) {
             count = 1;
         } else {
             count++;
         }
         prevInt = i;
     } while (count != 3);
     System.out.println("Same integer value entered thrice");

答案 2 :(得分:0)

你可以试试这个。

template<typename Name>
class NotWorking {
public:
  int var_ ## Name;
};

答案 3 :(得分:-2)

你好,如果你想做一个循环,你需要for命令。并且循环使用数组

int[] I = new int[3]
for(j=0;j<3;j++)
{
    System.out.println("enter an integer");
    I[j] =input.nextInt();
}

 if(I[0]==I[1] || I[1]==I[2]){
    System.out.println("Same integer entered thrice");
    continue; 
 }

假设代码在代码内部。如果您有疑问,请随时回复

您应该使用“继续”将所有内容循环回输入。