从java

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

标签: java arrays loops max minimum

我使用方法打印最大,第二大,最小和第二小的整数。这就是我到目前为止的基础:

     case 1:
        System.out.print("\nEnter the Limit: ");
        limit = input.nextInt();
        System.out.println(pairs(limit));
        break;

这是到目前为止被调用的方法:

// Case 1 Method : Largest and Smallest Pairs
   public static String pairs(int limit) {
      System.out.println("*** Largest and Smallest Pairs");
      return "";
   }

实际输出格式为 (最大,secondlargest),(最小,secondsmallest) 我之前从未使用过数组,而且我不确定如何使用循环来查找数值。我该如何开始呢?

这是我的程序的完整代码。你可以忽略第二和第三种情况,但是,我仍然需要第三种情况的帮助。我需要按顺序显示所有素数。以下是要求:Twin Prime Numbers:这应该让用户指定一个限制n(我改为使用限制)(如果n是1000,那么考虑1 到1000),并列出一对双素数到n。样品运行是(3,5),(5,7),(11,13),(17,19)

完整的代码:

import java.util.Scanner;

public class PatternChecker{

   // The scanner is accessible for every method included
   static Scanner input = new Scanner(System.in);

   public static void main(String[] args) {

      // Variables
      int limit;

      System.out.println("List of Pattern Checker problems:\n1) Largest and Smallest Pairs\n2) Patterns of Triangles\n3) Twin Prime Pairs\n4) Quit");
      System.out.print("Choice: ");
      int choice = input.nextInt();

      // The switch statement for the variable "choice" and each case
      switch (choice) {
         default:
            System.out.println("\n*** INVALID OPTION");
            break;
         case 1:
            System.out.print("\nEnter the Limit: ");
            limit = input.nextInt();
            System.out.println(pairs(limit));
            break;
         case 2:
            System.out.println("\nEnter the Limit: ");
            limit = input.nextInt();
            System.out.println(triangleOne(limit));
            System.out.println(triangleTwo(limit));
            System.out.println(triangleThree(limit));
            System.out.println(triangleFour(limit));
            break;
         case 3:
            System.out.println("\nEnter the Limit: ");
            limit = input.nextInt();
            System.out.println(primePairs(limit));
            break;
         case 4:
            System.out.println("\n*** End");
            break;
      }
   }

   // Case 1 Method : Largest and Smallest Pairs
   public static String pairs(int limit) {
      System.out.println("*** Largest and Smallest Pairs");
      return "";
   }
// Case 2 Method: Patterns of Triangles (Triangle One)
   public static String triangleOne(int limit) {
      System.out.println("*** Patterns of Triangles");
      for (int x = 1; x <= limit; x++) {
         for (int y = 1; y <= x; y++) {
            System.out.print(y + " ");
         }
         System.out.println();
      }
      return "";
   }
   // Case 2 Method: Patterns of Triangles (Triangle Two)
   public static String triangleTwo(int limit) {
      for (int x = limit; x > 0; x--) {
         for (int y = 1; y <= x; y++) {
            System.out.print(y + " ");
         }
         System.out.println();
      }
      return "";
   }
   // Case 2 Method: Patterns of Triangles (Triangle Three)
   public static String triangleThree(int limit) {
      for (int row = 1; row <= limit; row++) {
         for (int space = (limit - row); space > 0; space--) {
            System.out.print("  ");
         }
         for (int num = row; num > 0; num--) {
            System.out.print(num + " ");
         }
         System.out.println();
      }
      return "";
   }
   // Case 2 Method: Patterns of Triangles (Triangle Four)
   public static String triangleFour(int limit) {
      for (int row = limit; row >= 0; row--) {
         for (int space = (limit - row); space > 0; space--) {
            System.out.print("  ");
         }
         for (int num = 1; num <= row; num++) {
            System.out.print(num + " ");
         }
         System.out.println();
      }
      return "";
   }
// Case 3 Method: Twin Prime Pairs
   public static String primePairs(int limit) {
      System.out.println("*** Twin Prime Numbers up to " + limit);

      return "";
   }
}

3 个答案:

答案 0 :(得分:0)

好的,基于评论,我已经与arraylists写了快速回答。希望这可以帮助。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class MaxMin {

    private List<Integer> alist = new ArrayList<Integer>();

    public static void main(String args[]) {

        MaxMin maxmin = new MaxMin();
        maxmin.init();

    }

    public void init() {

        System.out.println("Welcome!!!");
        readFromUser();
        printUserList();
        doSort();
        display();  
    }

    public void readFromUser() {

        Scanner scanner = null;

        try {
            scanner = new Scanner(System.in);
            System.out.print("Enter the total number of elements :");
            Integer totalElements = scanner.nextInt();

            for (int i=0;i<totalElements;i++) {
                System.out.print("Enter the " + i +" number");
                alist.add(scanner.nextInt());
            }

        }catch(Exception e) {
            e.printStackTrace();
        } finally {
            scanner.close();
        }

    }

    public void printUserList() {

        System.out.println("user entered list is :");
        System.out.println(alist);
    }

    public void doSort() {

        Collections.sort(alist);
    }

    public void display() {

        System.out.println("(" +alist.get(alist.size()-1)+ "," +alist.get(alist.size()-2)+ ")" + "(" +alist.get(0)+"," +alist.get(1) +")"); 
    }


}

答案 1 :(得分:0)

我希望这不是一个家庭作业问题,但我的想法是使用数组循环,并跟踪最大和最小的数字。

从将最小数字变量分配给Integer.MAX_VALUE开始,因此您检查的第一个数字将被分配给最小数字,因为除了^ ^ 31 - 1之外的所有整数值都小于Integer.MAX_VALUE,并且您这样做也是最大的,但是使用Integer.MIN_VALUE。

然后,每当您再次分配最大数字时,将secondBiggest变量分配给“最大”变量。

考虑到这一点,你只需要循环遍历数组的值并检查它们是否大于最大值(在其中重新分配它)或小于最小值(与最大值相同)。

int[] array = new int[]{5, 3, 4, 1, 2};

for(int i = 0; i < array.length; i++){
    System.out.println(array[i]);
}

^ 循环数组的示例

答案 2 :(得分:0)

我为你创造了一个例子。

首先,它生成一个素数列表,直到极限(在这种情况下是硬编码的100)。接下来它会询问所有素数对并打印它们。这些对存储在ArrayList中,因此很容易得到第一对和最后一对。

这并不难理解,所以我不知道该解释什么。看看代码,如果您有任何问题,请随时询问。

import java.util.ArrayList;

public class PatternChecker {
  public ArrayList<Integer> primes = new ArrayList<>();
  public static void main(String[] args) {
    PatternChecker pc = new PatternChecker();
    pc.detectPrimes(100);
    ArrayList<int[]> numbers = pc.getPairs();
    System.out.println("Print all pairs: ");
    numbers.stream().forEach((intA)->System.out.println(intA[0]+" / "+intA[1]));
    System.out.println("Print just the greatest and the smallest pair: ");
    System.out.println("("+numbers.get(0)[0]+","+numbers.get(0)[1]+")");
    System.out.println("("+numbers.get(numbers.size()-1)[0]+","+numbers.get(numbers.size()-1)[1]+")");
  }

  public void detectPrimes(int limit) {
    for(int i=2;i<limit;i++)
      if(isPrime(i))
        primes.add(i);
  }
  protected boolean isPrime(int no) {
    for(int i=0;i<primes.size();i++)
      if(no % primes.get(i) == 0) return false;
    return true;
  }
  public ArrayList<int[]> getPairs() {
    ArrayList<int[]> result = new ArrayList<>();
    int last = primes.get(0);
    for(int i=1;i<primes.size();i++) {
      if(primes.get(i)==last+2) {
        int[] resH = new int[2];
        resH[0] = last;
        resH[1] = primes.get(i);
        result.add(resH);
      }
      last = primes.get(i);
    }
    return result;
  }
}