判斷數字是否輸入過-使用陣列
先樹入數值,再判斷是否曾長陣列,以免浪費空間
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; } }
方法二 概念:
迴圈中只放不重複的字,遇到重複的字,直接將次數加進計算次數的陣列中
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; } }
全站熱搜