1.考試成績已經保存在數組scores中,依次爲89,23,64,91,119,52,73,-23
要求根據通過自定義方法來找出其中前三名,將數組成績作爲參數傳入
要求判斷成績的有效性(0-100),如果成績無效,則忽略此成績.public class TEST {
public static void main(String[] args) {
int[] arr={89,-23,64,91,119,52,73};
arr(arr);
}
public static void arr(int[]arr){
for(int b=0;b<arr.length;b++){
//判斷成績是否在0-100
if(arr[b]>100||arr[b]<0){
arr[b]=0;
}
}
for(int i=0;i<arr.length-1;i++){
for(int a=i+1;a<arr.length;a++){
if(arr[i]<arr[a]){
int temp=arr[a];
arr[a]=arr[i];
arr[i]=temp;
}
//排序數組
}
}
System.out.println("前三名是");
for(int j=0;j<3;j++){
System.out.print(arr[j]+",");
//輸出前三
}
System.out.println();
}
}
結果:
2. 用數組來實現,定義並初始化一個(1--100)保存100個數的數組,從第一個元素開始,依次數(1,2,3循環往復),每次數到到3的元素淘汰掉.當到達數組末尾的時候再從頭開始,直到最後剩餘一個元素,寫出算法,並輸出最後保留的元素所在的最初的位置.
public class TEST1 {
public static void main(String[] args) {
int distence = 0;
int[] arr = new int[100];
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
}
while (true) {//循環運行代碼,用break跳出
int j = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
j++; //使用變量j記錄數組中不爲0的個數
}
}
if (j > 2) {
int z = distence;//將上一次末尾剩餘的數字加在新的數組的前面
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 0) {
z++; //使用變量z記錄不爲零的個數,
}
if (z == 3) {
arr[i] = 0;//當z等於3時將該值改爲0
z = 0; //重置不爲零的個數
}
}
distence = (j + distence) % 3;//用distence表示每一次改變完後末尾餘的數據的個數
}else {
break;
}
}
if (distence == 2 || distence == 0) {
for (int i = arr.length - 1; i > 0; i--) {
if (arr[i] != 0) {
System.out.println(i);//distence爲2或者0時應該輸出後面的
break;
}
}
}else {
for (int i = 0; i < arr.length; i++) {
if (arr[i] != 0) { //distence爲1時應該輸出前面的
System.out.println(i);
break;
}
}
}
}
}
結果
3. 用數組來實現對於一個整形數組,分別通過冒泡排序和快速排序,實現對於任意一個數組進行由小到大的排列。
冒泡排序
public class TEST2 {
public static void main(String[]args){//創建一個亂序數組
int[]array={ 98,28,3,29,61,41,99};
TEST2 sorter=new TEST2();
//調用排序方法將數組排序
sorter.sort(array);
}
public void sort(int[]array){
for(int i=1;i<array.length;i++){
for(int j=0;j<array.length-i;j++){
//比較相鄰元素,較大數往後排
if(array[j]>array[j+1]){
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
showArray(array);//輸出冒泡後的數組元素
}
public void showArray(int[]array){
for(int i:array){
System.out.print(">"+i);
}
System.out.println();
}}
直接選擇排序
public class TEST3{
public static void main(String[] args) {
//創建亂序數組
int[] array = { 98,28,3,29,61,41,99 };
TEST3 sorter =new TEST3();
//調用排序對象的方法將數組排序
sorter.sort(array);
}
public void sort(int[] array) {
int index;
for (int i = 1; i < array.length; i++) {
index = 0;
for (int j = 1; j <= array.length - i; j++) {
if (array[j] > array[index]) {
index = j;
}
}
//交換在位置array.length-i和index(最大值)兩個數
int temp = array[array.length - i];//把第一個元素值保持到臨時變量中
array[array.length - i] = array[index];//把第二個元素值保存到第一個元素單元中
array[index] = temp;//把臨時變量也就是第一個元素原值保持到第二個元素中
}
showArray(array);//輸出直接選擇排序後的數組值
}
public void showArray(int[] array) {
for (int i : array) {
System.out.print(" >" + i);
}
System.out.println();
}
}
4判斷101-200之間有多少個素數,並輸出所有素數。
public class TEST4 {
public static void main(String[]args){
int num=0;
for(int i=101;i<201;i++){
for(int k=2;k<i;k++){
int a= i % k;
if(k==i-1){
++num;
System.out.println("素數"+i);
}else if(a==0){
break;
}
}
}
System.out.println(num+"個");
}
}
結果
5.題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數.
import java.util.Scanner;
public class TEST5 {
public static void main(String args[]){
int num=0,space=0,letter=0,other=0;
Scanner s=new Scanner(System.in);
System.out.println("請輸出字符串");
String result=s.nextLine();
char arr[]=result.toCharArray();
for(int i=0;i<arr.length;i++){
if(Character.isDigit(arr[i])){
num++;
}else if(Character.isLetter(arr[i])){
space++;
}else if(Character.isSpace (arr[i])){
blank++;
}
else{ other++;
}
System.out.println(arr.length);
}
System.out.println("數字的個數是"+num);
System.out.println("空格的個數是"+space);
System.out.println("字母的個數是"+blank);
System.out.println("其他的個數是"+other);
}
}
結果
6.題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,
高於10萬元的部分,可可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,
高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤,求應發放獎金總數?
private final static long W = 100000;
public static double profit(double n){
if( n <= 1*W ){
return n*0.1;
}else if( n>1*W && n<=2*W){
return (W*0.1 + (n-W)*0.75);
}else if(n>2*W && n<=4*W){
return (W*0.1 + 1*W*0.75 + (n-2*W)*0.5);
}else if(n>4*W && n<=6*W){
return (W*0.1 + 1*W*0.75 + 2*W*0.5 + (n-4*W)*0.03);
}else if(n>6*W && n<=10*W){
return (W*0.1 + 1*W*0.75 + 2*W*0.5 + 2*W*0.03 + (n-6*W)*0.015);
}else if(n>10*W){
return (W*0.1 + 1*W*0.75 + 2*W*0.5 + 2*W*0.03 + 4*W*0.015 + (n-10*W)*0.01);
}else{
return -1;
}
}
public static void main(String[] args) {
System.out.println("請輸入本企業當月利潤:");
Scanner scanner =new Scanner(System.in);
System.out.println("應發獎金:" +profit(scanner.nextDouble()));
}
結果
7.分別定義用戶類,訂單類,產品類,其中訂單類至少要具有下訂單的行爲(入參爲一個產品名稱),
產品類中至少有一個成員變量爲產品名稱,至少有一個方法用來獲取產品的名稱。
用戶類中持有一個產品類型的成員變量。
用戶類中持有一個訂單類型的成員變量。
在我們的用戶類中定義main函數,當執行的時候,構造一個用戶類的對象,
並且通過手段可以拿到產品成員變量中的產品名稱,並且調用成員變量訂單的對象,進行下單。
最後輸出下單成功。
import java.util.Scanner;
public class TEST7{
Stringproduct;
Stringbuy;
public static void main(String[] args) {
TEST7 b=new TEST7();
Product p=new Product();
b.product=p.getName();
buy o=new buy();
o.placeAnOrder(b.product);
}
}
class buyextends TEST7{//訂單類繼承用戶類
void placeAnOrder(String name){//下單
System.out.println("你的商品"+name+"下單成功");
}
}
class Product extends TEST7{//產品類繼承用戶類
Stringname="電競";
String getName(){//輸入產品名稱
Scanner n=new Scanner(System.in);
System.out.println("請輸入商品名稱");
name=n.next();
return name;
}
}
結果