1.复数相乘
一个复数类有:
(1)一个无参的构造函数、一个带2个参数的构造函数;
(2)两个复数相乘的函数;
(3)复数输出函数
完善测试类的main函数,在main函数中输入两个复数的实部和虚部,输出两个复数的乘积。
样例输入1:
3 2
4 -5
样例输出1:
22-7i
样例输入2
3 2
4 -1
样例输出2
14+5i
样例输入3
3 2
3 -2
样例输出3
13
代码:
import java.util.Scanner;
class Complex {
int realPart;
int imaginPart;
Complex() {
realPart=0;
imaginPart=0;
}
Complex(int realPart,int imaginPart) {
this.realPart=realPart;
this.imaginPart=imaginPart;
}
//两个复数相乘
Complex mul(Complex a) {
Complex x = new Complex();
x.realPart=realPart*a.realPart-imaginPart*a.imaginPart;
x.imaginPart=a.realPart*imaginPart+realPart*a.imaginPart;
return x;
}
//按照a+bi的形式输出复数
public String toString(){
if(imaginPart>0)
return realPart+"+"+imaginPart+"i";
if(imaginPart<0)
return realPart+"-"+imaginPart*(-1)+"i";
return ""+realPart;
}
}
public class ComplexTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i = sc.nextInt();
int j = sc.nextInt();
int m = sc.nextInt();
int n = sc.nextInt();
Complex c = new Complex(i,j);
Complex t = new Complex(m,n);
c.mul(t);
System.out.println(c.mul(t).toString());
}
}
2.字符查找
输入一个字符串str和一个字符c,输出c在str中的位置。如果在字符串str中不存在字符c,则输出“not found”。
样例输入1:
abcd efba
b 样例输出1:
1
样例输入2:
abcdef gh
x 样例输出2:
not found
代码:
import java.util.Scanner;
public class FoundChar {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
String c=sc.nextLine();
int a=str.indexOf(c);
if(a==-1){
System.out.println("not found");
}else{
System.out.println(a);
}
}
}
3.字符串出现次数
输入两个字符串str1、str2,统计字符串str2出现在str1中的次数。
样例输入:
aaas lkaaas
as
样例输出:
2
代码:
import java.util.Scanner;
public class SubStringCount {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); //定义扫描键盘输入的对象
String str1 = sc .nextLine();
String str2= sc .nextLine();
char[] charArray = str1. toCharArray();
char[] charArray2 = str2. toCharArray();
int length = charArray2. length;
int count=0;
int cur = 0;
for(int i=0;i<charArray.length;i++) {
char c1 =charArray[i];
char c2= charArray2[cur];
if(c1==c2){
if(cur == (length -1)){
count++;
}else{
cur++;
}
}else{
cur=0;
}
}
System.out.println(count);
}
}
4,统计字符个数
从键盘输入一串字符,输出有多少个不同的字符、每个字符出现的次数(按字符出现的顺序输出)。
样例输入: bac4a,ab
样例输出
b:2
a:3
c:1
4:1
,:1
代码:
import java.util.Scanner;
public class CharCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
StringBuffer k=new StringBuffer(str);
int length=k.length();
String a;
int index,sum;
for(int i=0;i<k.length();) {
sum=0;
a=k.substring(0,1);
index=k.indexOf(a);
while(index!=-1) {
sum++;
k.deleteCharAt(index);
index=k.indexOf(a,index);
}
System.out.println(a+":"+sum);
}
}
}
5.最长的单词
从键盘输入一段文字,以回车结束。一段文字由各个英语单词组成,单词之间用,.?!以及一个以上的空格分隔,要求输出最长的字符串。
样例输入:
I am,you list.fast?java!file
样例输出:
list
fast
java
file
代码:
import java.util.Scanner;
public class LongestWord {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
//以,.?!及一个以上的空格作为分隔符(\\是转义符号)
String word[]=s.split(",|\\.|\\?|\\!| +");
String s1="";
int l=0;
for(String s2:word) {
if(s1.length()<s2.length()) {
s1=s2;
l=s2.length();
}
}
for(String s2:word) {
if(s2.length()>=l) {
System.out.println(s2);
}
}
}
}
6.验证哥德巴赫猜想
从键盘输入一个偶数n(6≤n≤100)求两个素数m1和m2,使得n=m1+m2。如果符合条件的数有多组,要求m1尽可能小,m2尽可能大。
如:10=3+7=5+5,只有3+7符合条件(3最小,7最大)。
所以如果n=10,则m1=3,m2=7
如果输入的n是奇数,则输出error
输入样例1:
6
输出样例1:(说明两个素数中间用英文逗号分隔)
3,3
输入样例2:
10
输出样例2:
3,7
输入样例3:
9
输出样例3:
error
代码:
import java.util.Scanner;
public class Test{
public static boolean isPrime(int num){
for(int j=2;j<num; j++){
if(num%j==0)//取余没余数,为素数
return false;
}
return true;
}
public static void main(String[] args){
Scanner s=new Scanner(System.in);
int num=s.nextInt();
if(num%2==0){
for(int i=2;i<=num/2;i++){
if(isPrime(i)&&isPrime(num-i)){//判断 i和 (num-i)是不是质数
if(i>(num-i)){
System.out.println((num-i)+","+i);
break;
}
else if(i<(num-i)){
System.out.println(i+","+(num-i));
break;
}
else if(i==(num-i)){
System.out.println(i+","+(num-i));
break;
}
}
}
}
else if(num%2!=0){
System.out.println("error");
}
s.close();
}
}