Home22
(倒排一个字符串)编写-一个程序,提示用户输人一个字符串,然后以反序显示该字符串。
import java.util.Scanner;
class Home{
public static void main(String[] args){
Scanner scanner =new Scanner(System.in);
System.out.print("请输入字符串");
String a=scanner.nextLine();
String b="";
char c[]=a.toCharArray();
for(int i=c.length-1;i>=0;i--){
b=b+c[i];
}
System.out.print(b);
}
}
Home23
(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目。
import java.util.Scanner;
class Home23{
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.print("Enter a string:");
String str=scanner.nextLine();
int sum=0;
char c[]=str.toCharArray();
for(int i=0;i<str.length();i++){
if(c[i]<='Z'&&c[i]>='A'){
sum++;
}
}
System.out.println("the number is uppercase letter is "+sum);
}
}
Home24
(反向显示一个整数)使用下面的方法头编写方法,反向显示一个整数:
public static void reverse(int number)
例如: reverse(3456) 返回6543。编写一个测试程序,提示用户输入一个整数,然后显示它的反向数。
import java.util.Scanner;
class Home24{
public static long sum=0;
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.print("Enter a number:");
long n=scanner.nextLong();
reverse(n);
System.out.println(sum);
}
public static void reverse(long n){
while(true){
sum=sum*10+n%10;
n/=10;
if(n==0){
break;
}
}
}
}
Home25
(指定字符的出现次数)使用下面的方法头编写-一个方法,找到一个字符串中指定字符的出现次数。
public static int count(String str, char a)
例如,count(“Welcome”,‘e’) 返回2.编写一个测试程序,提示用户输人一个字符串以及一个字符,显示该字符在字符串中出现的次数。
import java.util.Scanner;
class Home25{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("输入字符串:");
String str=scanner.nextLine();
System.out.print("输入查找元素:");
String ch=scanner.next();
int num=count(str,ch);
System.out.println(ch+"出现次数为"+num);
}
public static int count(String str,String ch){
int num=0;
while(str.indexOf(ch)!=-1){
str=str.substring(str.indexOf(ch)+1);
System.out.println(str.indexOf(ch));
num++;
}
return num;
/*
这里为另外一种方法
int num=0;
for(int i=0;i<str.length();i++){
if((str.charAt(i)+"").equals(ch)){
num++;
}
}
return num;
*/
}
}
Home26
(回文素数)回文素数是指一个数同时为素数和回文数。例如: 131 是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。如下所示:
2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929
import java.util.Scanner;
class Home26{
public static void main(String[] args) {
//1.数字初始化
int num=initDate();
//2.判断该数是不是回文素数
if(isHWSS(num)){
System.out.println("yes");
}else{
System.out.println("no");
}
}
public static int initDate(){
Scanner scanner =new Scanner(System.in);
System.out.print("enter a number:");
return scanner.nextInt();
}public static boolean isHWSS(int num){
//3.判断是否满足回文和素数
return isHuiWen(num)&&isSuShu(num);
}
public static boolean isHuiWen(int num){
//4.计算翻转数字
int a=reverse(num);
return a==num;
}
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
break;
}
}
return sum;
}
public static boolean isSuShu(int num){
//5.判断素数
boolean flag=true;
for(int i=2;i<=num/2;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
}
Home27
(游戏:双骰儿赌博)掷双骰子游戏是赌场中非常流行的骰子游戏。编写程序,玩这个游戏的一个变种,如下所示:
掷两个骰子。每个骰子有六个面,分别表示值1, 2, ... 6。检查这两个骰子的和。如果和为2、3或12 (称为掷骰子(craps),你就输了;如果和是7或者11 (称作自然( natural)),你就赢了;但如果和是其他数字(例如: 4、5、 6、8、9或者10),就确定了一个点。继续掷骰子,直到掷出一个7或者掷出和刚才相同的点数。如果掷出的是7,你就输了。如果掷出的点数和你前一次掷出的点数相同,你就赢了。
程序扮演一个独立的玩家。下面是一些运行示例。
import java.util.Random;
class Home27{
public static void main(String[] args) {
Random random=new Random();
//随机两个数模拟摇毂子
int a =random.nextInt(6)+1;
int b =random.nextInt(6)+1;
//int a=(int)(Math.random()*6+1);
//int b=(int)(Math.random()*6+1);
int c=a+b;
System.out.printf("You rolled %d + %d = %d \n",a,b,c);
if (c==2||c==3||c==12){//如果两数加起来是这三个值则输
System.out.println("you lose");
}else if(c==7||c==11){//如果两数加起来是这三个值则输
System.out.println("you win");
}else{
while(true){
//对这两个值进行重新赋值
a=(int)(Math.random()*6+1);
b=(int)(Math.random()*6+1);
int d=a+b;
System.out.printf("You rolled %d + %d = %d \n",a,b,d);
if(d==c){//如果和上一个值相同则赢
System.out.println("you win");
break;
}else if(d==7){//如果摇出来7则输
System.out.println("you lose");
break;
}else{
//摇出来其他值,将该值赋给c,进行下一轮循环
c=d;
}
}
}
}
}
Home28
(打印不同的数)编写-一个程序,读人10个数并且显示互不相同的数(即-一个数出现多次,但仅显示一次)。(提示,读人一个数,如果它是一个新数,则将它存储在数组中。如果该数已经在数组中,则忽略它。)输人之后,数组包含的都是不同的数。下面是这个程序的运行示例:
Home32
(合并两个有序列表)编写下面的方法,将两个有序列表合并成-一个新的有序列表。
public static int[] merge(int[] 1ist1, int[] 1ist2)
只进行1ist1. length+1ist2. 1ength次比较来实现该方法。编写-一个测试程序,提示用户输人两个有序列表,然后显示合并的列表。下面是- 一个运行示例。注意,输人的第-一个数字表示列表中元素的个数。该数字不是列表的一部分。
import java.util.*;
class Home32{
/*
1.提示用户输入第一个数组长度和元素
2.提示用户输入第二个数组长度和元素
2.创建数组等于二者之和
4.有序倒到第三个
*/
public static void main(String[] args) {
int[] list1={1,3,5,7,9};
int[] list2={2,4,6,8,10};
int p1=0;
int p2=0;
int[] list3=new int[list1.length+list2.length];
for(int i=0;i<list3.length;i++){
if(p1>=list1.length){
list3[i]=list2[p2++];
}else if(p2>=list3.length){
list2[i]=list1[p1++];
}else if(list1[p1]<=list2[p2]){
list3[i]=list1[p1++];
}else{
list3[i]=list2[p2++];
}
}
System.out.print(Arrays.toString(list3));
}
}
(代数方面:两个矩阵相乘)编写两个矩阵相乘的方法。方法头如下:
public static double[][] multiplyMatrix(double[][] a, double[][] b)
为了使矩阵a能够和矩阵b相乘,矩阵a的列数必须与矩阵b的行数相同,并且两个矩阵的元素要具有相同或兼容的数据类型。假设矩阵c是相乘的结果,而a的列数是n,那么每个元素Cy就是anX by+axb.+…+agxbyo例如,对于两个3x3的矩阵a和b, c就有:
这里的Cij=Ai1B1j+Ai2B2j+Ai3*B3j.
编写一个测试程序,提示用户输人两个3x3的矩阵,然后显示它们的乘积。下面是一个运行示例:
class Home33{
public static void main(String[] args) {
double A[][]={
{1,2,3},
{4,5,6},
{7,8,9}
};
double B[][]={
{0,2.0,4.0},
{1,4.5,2.2},
{1.1,4.3,2.2}
};
double[][] C=new double[A.length][B[0].length];
for(int i=0;i<C.length;i++){
for(int j=0;j<C[i].length;j++){
C[i][j]=getSum(A,B,i,j);
System.out.print(C[i][j]+" ");
}
System.out.println();
}
}
public static double getSum(double[][] A,double[][] B,int i,int j){
double sum=0;
//Cij=Ai1*B1j+Ai2*B2j+Ai3*B3j
for(int k=0;k<B.length;k++){
sum+=A[i][k]*B[k][j];
}
return sum;
}
}