Java基礎期中小結(一)

反轉字符串

題目:將輸入的字符串翻轉後輸出。如abcd輸出爲dcba。

思路:將字符串轉換爲字符數組,倒着遍歷。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		String reverse = "";
		char[] ch = s.toCharArray();
		for(int i=ch.length-1;i>=0;i--) {
			reverse+=ch[i];
		}
		System.out.print(reverse);
	}

找朋友

題目:每個案例第一行兩個整數N,M。接下來有N行,第i(i = 1,2,…,N)行每一行有一個數,表示讀者i-1最喜歡的圖書的編號P。輸出N行,每行一個數,第i行的數表示讀者i有幾個潛在朋友。如果i和任何人都沒有共同喜歡的書,則輸出“BeiJu”。

思路:定義兩個數組分別存放每個人喜歡的圖書編號和喜歡某圖書的人數。最後由題意可得,對於每一位讀者,遍歷他喜歡的書的人數是否超過1,超過則計算人數(-1),否則輸出“BeiJu”。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int N=0, M=0;
		N = in.nextInt();M=in.nextInt();
		int[] f = new int[N];
		int[] book = new int[M];
		for (int i=0;i<N;i++) {
			f[i]=in.nextInt();
			book[f[i]]++;
		}
		for (int i=0;i<N;i++) {
			if(book[f[i]]>1) {
				System.out.println(book[f[i]]-1);
			}else {
				System.out.println("BeiJu");
			}
		}
		in.close();
	}

計算int型二進制1的個數

題目:計算int型二進制1的個數。即將數轉爲二進制後,統計1的個數。如輸入5,輸出2.

思路:利用Integer類裏的toBinaryString方法,將輸入的int型整數轉換成二進制字符串,對其進行遍歷統計1的個數。

public static void main(String[] args) {
		// TODO Auto-generated method stub	
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int sum = 0;
		String result = Integer.toBinaryString(n);
		for (int i=0;i<result.length();i++) {
            //charAt:利用下標進行字符串定位
			if(result.charAt(i)=='1')sum++;
		}
		System.out.print(sum);
		in.close();
	}

情報加密

題目:對給定的一個字符串,把其中從a-y,A-Y的字母用其後繼字母替代,把z和Z用a和A替代。可能有多組測試數據。每組測試數據的第一行是字符串的數目n,其餘n行每行一個字符串,每個字符串長度小於80個字符。對於每組數據,輸出每行字符串的加密字符串。

輸入 1 (回車) Hello! How are you!

輸出 Ifmmp! Ipx bsf zpv!

思路:因爲可能有多組測試數據,因此需要while(in.hasNextInt())進行判斷,當下一個輸入是整數型時則接收輸入且以此設定循環。循環內根據條件進行修改即可,注意強制類型轉換。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		
		while(in.hasNextInt()) {
			int n = in.nextInt();
			for(int i=0;i<n;i++) {
                //按行讀入
				String s = in.nextLine();
				String change = "";
				for(int j=0;j<s.length();j++) {
					if((s.charAt(j)>='a'&&s.charAt(j)<'z')||(s.charAt(j)>='A'&&s.charAt(j)<'Z')) {
						change+=(char)(s.charAt(j)+1);
					}else if(s.charAt(j)=='Z'||s.charAt(j)=='z') {
						change+=(char)(s.charAt(j)-25);
					}else {
						change+=s.charAt(j);
					}
				}
				System.out.println(change);
			}
			
		}
		in.close();
	}

計算日期

題目:給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入包括兩個整數y,n。可能有多組測試數據,對於每組數據,按yyyy-mm-dd的格式將輸入中對應的日期打印出來。

樣例輸入 樣例輸出
2000 3 2000-01-03
2000 31 2000-01-31
2000 40 2000-02-09
2000 60 2000-02-29

思路:

使用java自帶的Calendar類進行解題。

注意:calendar類默認0爲一月。

get(Calendar.DAY_OF_MONTH);//獲得這個月的第幾天
get(Calendar.DAY_OF_WEEK);//獲得這個星期的第幾天 
get(Calendar.DAY_OF_YEAR);//獲得這個年的第幾天  
getTimeMillis();//獲得當前時間的毫秒錶示
public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calendar calendar = Calendar.getInstance();//獲取一個calendar實例
		Scanner in = new Scanner(System.in);
		int y=0,n=0;
		while(in.hasNextInt()) {
			y = in.nextInt(); 
			n = in.nextInt();
			calendar.set(Calendar.YEAR, y);
			calendar.set(Calendar.MONTH, 0);//月份設置
			calendar.set(Calendar.DAY_OF_MONTH, 0);//月中的第幾天
			calendar.add(Calendar.DATE, n);//指一個月中的某天,與DAY_OF_MONTH同義
            //格式化輸出
			SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd");
			String time = format0.format(calendar.getTime());
			System.out.println(time);
		}
		in.close();
	}

求近似數

題目:求小數四捨五入後的結果

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		System.out.print(Math.round(in.nextDouble()));
		in.close();
	}

輸出較小數

題目:輸入n個整數,輸出其中最小的k個。

如輸入 5 2

1 3 5 7 2

輸出 1 2

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int k = in.nextInt();
		int[] m = new int[n];
		for(int i=0;i<n;i++) {
			m[i] = in.nextInt();
		}
    //數組排序函數
		Arrays.sort(m);
		for(int i=0;i<k;i++) {
			System.out.print(m[i]+" ");
		}
		in.close();
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章