判斷數字是否輸入過-使用陣列

先樹入數值,再判斷是否曾長陣列,以免浪費空間

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //先建一個陣列,放輸入的數
        int[] inputArr = new int[2];
        int input;
        int count = 0;
        boolean re = false;  //判斷是否重複輸入的布林值
        while(true) {
            input = sc.nextInt();   //先輸入
            if (count == inputArr.length) { //再增長陣列
                inputArr = doubleArr(inputArr);
            }
            for(int i =0; i <inputArr.length; i++){     //判斷是否已輸入過
                if(inputArr[i] == input){
                    System.out.println("已輸入過");
                    re = true;  //若有輸入過布林值轉為true
                    break;
                }
            }
            if(re == false) {   //若布林為false代表沒有重複,加入陣列中
                inputArr[count++] = input;
            }
        }
    }

    public static int[] doubleArr(int[]arr){
        int [] newArr = new int[arr.length*2];
        for(int i =0; i<arr.length; i++){
            newArr[i] = arr[i];
        }
        return newArr;
    }
}

 

 

查字典-判斷輸入的數字中,同樣的出現幾次,按-1停止

方法一   概念:

先宣告一個陣列放(arr)放輸入的字

宣告第二個陣列(out)放所有出現的字

用迴圈比對兩個陣列同樣的字出現的次數

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int arr[] = new int[2];
        int out[] = new int[3];
        int count = 0;
        int outCount = 0;
        boolean re;     //判斷是否為
        while (true) {
            int input = sc.nextInt();
            if (input == -1) {  //遇到輸入為-1的停止迴圈
                break;
            }
            if (count == arr.length) {
                arr = doubleArr(arr);
            }
            re = repeatOrNot(arr, input);   //判斷是否重複
            if (!re) {                      //如果沒有重複,放進要輸出的陣列中
                if (outCount == out.length) {
                    out = doubleArr(out);
                }
                arr[count++] = input;
                out[outCount++] = input;
            } else {
                arr[count++] = input;
            }
        }
        //逐一去對out陣列裡的字,在arr陣列中出現幾次
        for (int i = 0; i < outCount; i++) {
            int outNum = 0;
            for (int n = 0; n < count; n++) {
                if (out[i] == arr[n]) {
                    outNum++;
                }
            }
            System.out.println("字串:" + out[i] + "\t\t共出現" + outNum + "");
        }

    }

    public static int[] doubleArr(int[] arr) {
        int[] newArr = new int[arr.length * 2];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        return newArr;
    }

    //確認是否有重複的值
    public static boolean repeatOrNot(int[] arr, int input) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == input) {
                return true;
            }
        }
        return false;
    }


}

image

 

方法二   概念:

迴圈中只放不重複的字,遇到重複的字,直接將次數加進計算次數的陣列中

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int out[] = new int[3];     //一個放不重複數字
        int outNum[] = new int[3];  //一個放數字出現的次數
        int count = 0;
        while (true) {
            int input = sc.nextInt();
            if (input == -1) {  //遇到輸入為-1的停止迴圈
                break;
            }
            if(count == out.length){
                out = doubleArr(out);
                outNum = doubleArr(outNum);
            }
            int index = repeatOrNot(out, input);    //確認是否重複,若重複,回報在第幾個
            if(index == -1){        //沒有重複
                    out[count] = input; //放進陣列
                    outNum[count] = 1;  //次數加為1
                    count++;
            }else{
                outNum[index]++;    //找到原有的陣列序號,次數+1
            }
        }
        for(int i = 0 ; i<count; i++) {
            System.out.println("字串:" + out[i] + "\t\t共出現" + outNum[i] + "");
        }

    }

    public static int[] doubleArr(int[] arr) {
        int[] newArr = new int[arr.length * 2];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        return newArr;
    }

    //確認是否有重複的值,並回報再陣列第幾個
    public static int repeatOrNot(int[] arr, int key) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == key) {
                return i;
            }
        }
        return -1;
    }
}

image

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Lillian 的頭像
    Lillian

    安安的code日記

    Lillian 發表在 痞客邦 留言(0) 人氣()