#鱼C五周年嘉年华# 《JAVA程序设计&改错》# 第三章
本帖最后由 百日维新 于 2015-2-25 02:21 编辑no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。(15分)
no22 计算字符串中子串出现的次数 (15分)
no23 求一个偶数(大于6)表示为两个素数之和。(15分)
no24 求一元二次方程的解(aX2 + bX + C = 0)(15分)
no25 打印出杨辉三角形(15分)
no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。(15分)
no27 打印出如下图案(菱形)(15分)
*
***
*****
*******
*****
***
*
no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。(15分)
no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。(15分)
no30 用程序说明Java 的==与 equals 的区别(20分)
抢沙发啦
{:9_217:} String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
共5个
“a”,"b","c","ab","abc" No30 用程序说明Java 的==与 equals 的区别
对于基本数据类型boolean,byte,short,char,int,long,float,double, 他们之间的比较,==比较的是他们的值。
对于对象==是比较的对象的引用是否相同,即是否指向相同的地址。对于业务逻辑来讲两个对象是否相同,也许并不是看指向地址是否相同。而是由自身的逻辑决定,此时我们通过重写equals方法,来实现自己的判断对象是否相同的逻辑。例如String的equals,就是看String的内容是否相同,而不是看指向地址是否相同。 no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
package 小甲鱼活动;
import java.util.Scanner;
public class _3_29
{
public static void main(String[] args)
{
System.out.println("输入a和个数:");
Scanner scanner = new Scanner(System.in);
int shu = scanner.nextInt();
int geShu = scanner.nextInt();
if (shu < 0 || shu > 9)
return;
int sum = shu;
int maxShu = shu;
for (int i = 1; i < geShu; i++)
{
maxShu = maxShu * 10 + shu;
sum += maxShu;
}
System.out.println(sum);
}
}
no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。
package 小甲鱼活动;
public class _3_28
{
public static void main(String[] args)
{
for (int i = 2; i <= 1000; i++)
{
int amount = 1;
for (int j = 2; j < i; j++)
{
if(0 == i % j){
amount += j;
}
}
if(amount == i)
System.out.println(i);
}
}
}
no27 打印出如下图案(菱形)
package 小甲鱼活动;
public class _3_27
{
public static void main(String[] args)
{
int bian = 7;
int middleBian = bian / 2;
for (int i = 0; i < middleBian; i++)
{
for (int j = 0; j < middleBian - i; j++)
{
System.out.print(" ");
}
for (int j = 0; j < i * 2 + 1; j++)
{
System.out.print("*");
}
System.out.println();
}
for (int i = 0; i <= middleBian; i++)
{
for (int k = 0; k < i; k++)
{
System.out.print(" ");
}
for (int j = 0; j < bian - i * 2; j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。
package 小甲鱼活动;
import java.util.Scanner;
public class _3_26
{
public static void main(String[] args)
{
// Monday, Tuesday, Wednesday, Thursday Friday Saturday, Sunday
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine().toLowerCase();
//JDK switch支持字符串
switch (input)
{
case "m":
System.out.println("星期一");
break;
case "t":
{
System.out.println("无法判断请输入第二个字母");
String secondInput = scanner.nextLine().toLowerCase();
if ("u".equals(secondInput))
System.out.println("星期二");
else if ("h".equals(secondInput))
System.out.println("星期四");
else
System.out.println("error");
break;
}
case "w":
System.out.println("星期三");
break;
case "f":
System.out.println("星期五");
break;
case "s":
{
System.out.println("无法判断请输入第二个字母");
String secondInput = scanner.nextLine().toLowerCase();
if ("a".equals(secondInput))
System.out.println("星期六");
else if ("u".equals(secondInput))
System.out.println("星期天");
else
System.out.println("error");
break;
}
default:
System.out.println("error");
}
}
}
no25 打印出杨辉三角形
package 小甲鱼活动;
import java.util.ArrayList;
public class _3_25
{
public static void main(String[] args)
{
// 层数
int levelNumber = 7;
ArrayList<Integer> lastLevelNumbers = new ArrayList<>();
ArrayList<Integer> thisLevelNumbers = new ArrayList<>();
for (int i = 1; i <= levelNumber; i++)
{
for (int j = 1; j <= i; j++)
{
if (1 == j || i == j)
thisLevelNumbers.add(1);
else
{
int leftTopNumber = lastLevelNumbers.get(j - 2).intValue();
int rightTopNumber = lastLevelNumbers.get(j - 1).intValue();
thisLevelNumbers.add(leftTopNumber + rightTopNumber);
}
}
for (int k = 0; k < levelNumber - i; k++)
System.out.printf("");
for (Integer nu : thisLevelNumbers)
System.out.printf("%2d",nu);
System.out.println();
lastLevelNumbers.clear();
lastLevelNumbers.addAll(thisLevelNumbers);
thisLevelNumbers.clear();
}
}
}
no24 求一元二次方程的解(aX2 + bX + C = 0)
package 小甲鱼活动;
import java.util.Scanner;
public class _3_24
{
public static void main(String[] args)
{
System.out.println("请依次输入二次项的二次项系数,一次项系数和常数项:");
Scanner scanner = new Scanner(System.in);
double two = scanner.nextDouble();
double one = scanner.nextDouble();
double constant = scanner.nextDouble();
double derta = one * one - 4 * two * constant;
if (0 > derta)
System.out.println("无解");
else
{
double sqrtDerta = Math.sqrt(derta);
double x1 = (-one + sqrtDerta) / 2 * two;
if (0 == derta)
System.out.println("x1=x2=" + x1);
else
{
double x2 = (-one - sqrtDerta) / 2 * two;
System.out.println("x1=" + x1 + " x2=" + x2);
}
}
}
}
no23 求一个偶数(大于6)表示为两个素数之和
package 小甲鱼活动;
import java.util.Scanner;
public class _3_23
{
public static void main(String[] args)
{
System.out.println("输入一个大于6的偶数:");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
if (0 != (input & 1) || 6 > input)
System.out.println("输入不合法");
else
{
// 最小的素数为2
int k = input;
for (int i = 2; i < input / 2; i++)
{
k = input - i;
if (isPrimeNumber(i) && isPrimeNumber(k))
{
System.out.println(input + "=" + i + "+" + (k));
}
}
}
}
public static boolean isPrimeNumber(int number)
{
if (number < 2)
return false;
// 一个数去除以比它的一半还要大的数,一定除不尽
for (int i = 2; i <= number / 2; i++)
{
if (0 == number % i)
return false;
}
return true;
}
}
no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。
一个编译器优化为 “abc在常量池 no21 String str = "a"+"b"+"c";总共创建了几个字符串?
就是只有一个 编译时就确定下来了。"abc" 第一版好了@百日维新
{:9_227:}
package com.xl.fichc.fiveAnniversary;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class FiveAnniversaryTest3 {
//no21 String str = "a"+"b"+"c";总共创建了几个字符串?说明理由。(15分)
/*只创建了一个字符串"abc"
编译时编译器直接将它们连接的结果进行赋值,该语句相当于String str = "abc";
然后当JVM执行到这一句的时候, 就在String pool里查找"abc",如果没有,就会创建一个 */
//no22 计算字符串中子串出现的次数 (15分)
/*public static void main(String[] args) {
//测试用例:在下面str中计算"aaa"出现的次数
String str = "aaabcaaabfsaaajisjoaaagwoiaaagweogiaaagwesgeaaajgowaaa";
String child="aaa";
int count = checkNum(str,child);
System.out.println(str+"中含有"+count+"个"+child);
}
public static int checkNum(String str,String child){
int count=0;
while(str.indexOf(child) != -1){
count += 1;
str = str.substring(str.indexOf(child)+child.length());
}
return count;
}*/
//no23 求一个偶数(大于6)表示为两个素数之和。(15分)
/*public static void main(String[] args) {
System.out.print("请输入大于6的偶数:");
int even = new Scanner(System.in).nextInt();
List<Integer> list = new ArrayList<Integer>();
//查找此数中的素数,并放到list中
for(int i=2;i<even;i++){
int j;
for(j=2;j<i;j++){
if(i%j==0) break;
}
if(j==i) list.add(i);
}
//查找俩素数之和等于even
for(int i=0;i<list.size();i++){
for(int j=i+1;j<list.size();j++){
if(list.get(i)+list.get(j)==even){
System.out.println(even+"="+list.get(i)+"+"+list.get(j));
}
}
}
}*/
//no24 求一元二次方程的解(aX2 + bX + C = 0)(15分)
/*public static void main(String[] args) {
System.out.println("请输入a的值:");
float a =new Scanner(System.in).nextFloat();
System.out.println("请输入b的值:");
float b =new Scanner(System.in).nextFloat();
System.out.println("请输入c的值:");
float c =new Scanner(System.in).nextFloat();
if(a==0 && b!=0) System.out.println("x的值为:"+(-c/b));
if(a==0 && b==0 && c!=0) System.out.println("此方程无解!");
if(a==0 && b==0 && c==0) System.out.println("此方程有无穷个解!");
float delta = b*b-4*a*c;
if(a!=0){
if(delta<0){
System.out.println("△<0,此方程无解!");
}else if(delta==0){
System.out.println("此方程的解为:x="+(-b)/(2*a));
}else{
double x1 = (-b+Math.sqrt(delta))/(2*a);
double x2 = (-b-Math.sqrt(delta))/(2*a);
System.out.println("此方程的解为:x1="+x1+",x2="+x2);
}
}
}*/
//no25 打印出杨辉三角形(15分)
/*public static void main(String args[]) {
System.out.print("请输入杨辉三角形的行数:");
int r = new Scanner(System.in).nextInt();
//初始化
int a[][] = new int[];
for(int i=0;i<r;i++) {
a = new int;
}
//赋值
int res[][] = yanghui(a, r);
//打印
for(int i=0;i<r;i++) {
for(int j=0;j<=res.length-1;j++)
System.out.print(res+" ");
System.out.println();
}
}
public static int[][] yanghui(int a[][],int r){
for(int i=0;i<r;i++)
for(int j=0;j<=a.length-1;j++) {
if (i==0||j==0||j==a.length-1)
a = 1;
else
a = a+a;
}
return a;
}*/
//no26 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母。(15分)
/*public static void main(String[] args) {
//Monday Tuesday Wednesday Thursday Friday Saturday Sunday
System.out.print("请输入星期的首字母:");
String first = new Scanner(System.in).next();
String second = "";
switch(first.toLowerCase()){
case "m":
System.out.println(first+"对应的星期是Monday(星期一)");
break;
case "t":
System.out.print("无法判断,请输入第二个字母:");
second = new Scanner(System.in).next();
if(second.equalsIgnoreCase("u")){
System.out.println(first+second+"对应的星期是Tuesday(星期二)");
}else if(second.equalsIgnoreCase("h")){
System.out.println(first+second+"对应的星期是Thursday(星期四)");
}else{
System.out.println("无对应的星期");
}
break;
case "w":
System.out.println(first+"对应的星期是Wednesday(星期三)");
break;
case "f":
System.out.println(first+"对应的星期是Friday(星期五)");
break;
case "s":
System.out.print("无法判断,请输入第二个字母:");
second = new Scanner(System.in).next();
if(second.equalsIgnoreCase("a")){
System.out.println(first+second+"对应的星期是Saturday(星期六)");
}else if(second.equalsIgnoreCase("u")){
System.out.println(first+second+"对应的星期是Thursday(星期日)");
}else{
System.out.println("无对应的星期");
}
break;
default:
System.out.println("无对应的星期");
}
}*/
// no27 打印出如下图案(菱形)(15分)
// *
// ***
// *****
// *******
// *****
// ***
// *
/*public static void main(String[] args) {
System.out.print("请输入菱形的行数:");
int row = new Scanner(System.in).nextInt();
for(int i=1;i<row;i++){
for(int j=row-i;j>=0;j--){
System.out.print(" ");
}
for(int j=1;j<=2*i-1;j++){
System.out.print("*");
}
System.out.println();
}
for(int i=row;i>0;i--){
for(int j=row-i;j>=0;j--){
System.out.print(" ");
}
for(int j=2*i-1;j>0;j--){
System.out.print("*");
}
System.out.println();
}
}*/
//no28 编程求10000以内的完数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数。(15分)
/*public static void main(String[] args) {
int num = 10000;
System.out.println(num+"以内的完全数有:");
for(int i=1;i<=num;i++){
if(isPerfectNumber(i)){
System.out.print(i+"");
}
}
}
public static boolean isPerfectNumber(int num){
int sum = 0;
for(int i=1;i<num;i++){
if(num%i==0){
sum +=i;
}
}
if(sum==num){
return true;
}
return false;
}*/
//no29 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。(15分)
/*public static void main(String[] args) {
System.out.print("请输入a的值:");
int a = new Scanner(System.in).nextInt();
System.out.print("请输入个数:");
int num = new Scanner(System.in).nextInt();
int sum = 0;
int temp=0;
for(int i=1;i<=num;i++){
temp = temp*10+a;
sum += temp;
if(i==num){
System.out.print(temp+"=");
}
else{
System.out.print(temp+"+");
}
}
System.out.println(sum);
}*/
//no30 用程序说明Java 的==与 equals 的区别(20分)
/*public static void main(String[] args) {
//呃,简单来说,"=="表示是否是同个对象,"equal"表示对象的值是否相同
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = "abc";
String str4 = "abc";
System.out.println(str1.equals(str2));
System.out.println(str1==str2);
System.out.println("====================");
System.out.println(str2.equals(str3));
System.out.println(str2==str3);
System.out.println("====================");
System.out.println(str3.equals(str4));
System.out.println(str3==str4);
}*/
}
来晚了:sadNo1:
String str = "a"+"b"+"c";只创建了一个对象,其中"a"、"b"、"c" 都是字符串常量。
No2:
/**
* 计算字符串中子串出现的次数
* @author wwwxinyu1990
*
*/
public class SubstringCount {
public static void main(String[] args) {
String str = "asdfsdgasfgjasdgjjhdfjghaghjasjglfkasdhsdlgsdfgl";
String subStr = "sd";
// 输出子串出现的次数
System.out.println(getSubStrCount(str, subStr));
}
/**
* 计算字串出现的次数
* @param str 字符串
* @param subStr 包含的子串
* @return 子串出现的次数
*/
public static int getSubStrCount(String str, String subStr) {
if (str == null
|| str.length() == 0
|| subStr == null
|| subStr.length() == 0
|| str.length() < subStr.length()) {
return 0;
}
String replacedStr = str.replace(subStr, "");
return (str.length() - replacedStr.length()) / subStr.length();
}
}
No3:
import java.util.Scanner;
/**
* 求一个偶数(大于6)表示为两个素数之和。
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
System.out.println("请输入一个大于6的偶数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 判断是否为大于6的偶数
if (n < 6 || n % 2 != 0) {
System.out.println("输入不正确!");
}
for (int i = 2; i <= n; i++) {
if (isPrime(i) && isPrime(n - i)) {
System.out.println("结果是:" + n + "=" + i + "+" + (n - i));
break;
}
}
// 关闭输入流
if (sc != null) {
sc.close();
}
}
/**
* 判断因数是否为素数
* @param n
* @return 是素数返回true,不是返回false
*/
private static boolean isPrime(int n) {
for (int i = 2; i < n; i++){
if (n % i == 0) {
return false;
}
}
return true;
}
}
No4:
import java.util.Scanner;
/**
* 求一个偶数(大于6)表示为两个素数之和。
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入a的值:");
int a = sc.nextInt();
System.out.println("请输入b的值:");
int b = sc.nextInt();
System.out.println("请输入c的值:");
int c = sc.nextInt();
if(b*b - 4*a*c < 0){
System.out.println("对不起,次方程无解!");
}else if(b*b - 4*a*c == 0){
System.out.println("此方程解x=" + -b/(2*a));
}else{
System.out.println("此方程解x1=" + ((-b+ "/"+ 2*a
+ "+√(" + (b*b - 4*a*c)) +")/" +(2*a)) + " , x2="
+ ((-b+ "/"+ 2*a + "-√(" + (b*b - 4*a*c)) +")/" + (2*a)));
}
if (sc != null) {
sc.close();
}
}
}
No5:
import java.util.Scanner;
/**
* 打印出杨辉三角形。
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入输出的行数:");
int rowInt = sc.nextInt();
int triangle[][]=new int;
for(int i = 0;i < rowInt;i++){
for(int j = 0;j < rowInt * 2 -1;j++){
triangle = -1;
}
}
for(int i = 0;i < rowInt;i++){
triangle[(rowInt * 2 - 1) / 2 - i] = 1;
triangle[(rowInt * 2 - 1) / 2 - i] = 1;
}
for(int i = 2;i < rowInt;i++){
for(int j = 0;j < rowInt * 2 -1;j++){
if(j > rowInt - i - 1
&& j < rowInt * 2 - 1 - 1
&& triangle != -1
&& triangle != -1)
triangle = triangle + triangle;
}
}
for(int i = 0;i < rowInt;i++){
for(int j = 0;j < rowInt * 2 - 1;j++){
if(triangle == -1){
// 用printf方法以3个格输出字符串
System.out.printf("%3s"," ");
} else{
// 用printf方法以3个格输出数字
System.out.printf("%3d",triangle);
}
}
System.out.println();
}
if (sc != null) {
sc.close();
}
}
}
No6:
import java.util.Scanner;
/**
* 请输入星期几的第一个字母来判断一下是星期几, 如果第一个字母一样, 则继续判断第二个字母
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期的缩写(最少三位):");
String week = sc.nextLine();
if (week == null || week.length() == 0) {
System.out.println("请重新启动程序并按要求输入");
}
week = week.toUpperCase();
char firstChar = week.charAt(0);
char secondChar = week.charAt(1);
switch(firstChar) {
case 'M':
System.out.println("星期一");
break;
case 'T':
switch (secondChar) {
case 'U':
System.out.println("星期二");
break;
case 'H':
System.out.println("星期四");
break;
}
break;
case 'W':
System.out.println("星期三");
break;
case 'F':
System.out.println("星期五");
break;
case 'S':
switch (secondChar) {
case 'A':
System.out.println("星期六");
break;
case 'U':
System.out.println("星期日");
break;
}
default:
System.out.println("输入不正确");
break;
}
if (sc != null) {
sc.close();
}
}
}
No7:
/**
* 打印出菱形
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
int n = 7;
for (int i = 0; i < n; i++ ) {
if (i<=(n-1)/2) {
for (int j = i; j<(n-1)/2; j++) {
System.out.print(" ");
}
for (int k = 0; k<2*i+1; k++) {
System.out.print("*");
}
} else {
for (int j = 0; j<i-(n-1)/2; j++) {
System.out.print(" ");
}
for (int k = 0; k<2*(n-i)-1; k++) {
System.out.print("*");
}
}
System.out.println();
}
}
}
No8:
/**
* 求10000以内的完数
* 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 10000; i++) {
// 定义因子之和变量
int temp = 0;
for (int n = 1; n < i / 2 + 1; n++) {
if (i % n == 0) {
// 能被整除的除数则被加到temp中
temp += n;
}
}
// 如果因子之和与原数相等的话,说明是完数
if (temp == i) {
// 输出完数
System.out.print(i + " ");
}
}
}
}
No9:
import java.util.Scanner;
/**
* 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
* 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入因子a的值:");
int a = sc.nextInt();
System.out.println("请问求多少个数的和?");
int n = sc.nextInt();
// 结果
int sum = 0;
for(int i = 0 ; i < n ; i++){
sum+=a*fun(i);
}
System.out.println(sum);
if (sc != null) {
sc.close();
}
}
public static double fun(int m){
if (m == 0)
return 1;
return Math.pow(10, m) + fun(--m);
}
}
No10:
/**
* 用程序说明Java 的==与 equals 的区别
* 区别是:
* 当比较的是基本数据类型,应该使用双等号,比较的是值。
* 当比较的复合数据类型(类):
* 没有覆写equals方法的话,双等号和equals方法比较的都是在内存中的存放位置的地址值。
* 在一些类库当中把equals方法覆盖掉了,如String,Integer,Date这些类,equals方法就
* 不再是比较的是地址值
* @author wwwxinyu1990
*
*/
public class Test {
public static void main(String[] args) {
String str1 = "test";
String str2 = "test";
String str3 = new String("test");
if (str1 == str2) {
System.out.println("str1 == str2");
} else {
System.out.println("str1 != str2");
}
if (str1 == str3) {
System.out.println("str1 == str3");
} else {
System.out.println("str1 != str3");
}
if (str1.equals(str3)) {
System.out.println("str1 equals str3");
} else {
System.out.println("str1 not equals str3");
}
}
}
No21
我觉得是5个。"a","b","c","ab","abc"。
首先先有"a","b","c"这三个字符串。然后执行"a"+"b",生成"ab"字符串,然后执行"ab"+"c",生成"abc"。
如果String str算的话就是6个……
No22
这个有点乱……
import java.util.Scanner;
public class No22 {
public static void main(String[] args) {
int count = 0, len1, i, j;
String s1, s2;
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
s1 = sc.nextLine();
System.out.println("请输入子串:");
s2 = sc.nextLine();
len1 = s1.length();
for (i = 0; i < s1.length(); i++, len1--) {
if (len1 < s2.length()) {
break;
}
if (s1.charAt(i) == s2.charAt(0)) {
for (j = 1; j < s2.length(); j++) {
if (s1.charAt(i + j) != s2.charAt(j)) {
break;
}
}
if (j == s2.length()) {
count++;
}
}
}
System.out.println("子串数量为:" + count);
sc.close();
}
}
No23
import java.util.Scanner;
public class No23 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.println("请输入大于6的偶数");
num = sc.nextInt();
if (num <= 6 || num % 2 != 0) {
System.out.println("输入的数字不符合要求。");
} else {
for (int i = 1; i <= num / 2; i++) {
if (prime(i) && prime(num - i)) {
System.out.println(num + "=" + i + "+" + (num - i));
break; // 如果需要输出全部可能则将此行去掉。
}
}
}
sc.close();
}
static boolean prime(int i) {
if (i == 1) {
return false;
} else {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
}
}
No24
import java.util.Scanner;
public class No24 {
public static void main(String[] args) {
int a, b, c;
double p, q, deta;
Scanner sc = new Scanner(System.in);
System.out.println("请分别依次输入二次项系数、一次项系数和常数项,用空格隔开:");
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
if (a == 0) {
System.out.println("输入的不是一元二次方程。");
} else {
deta = b * b - 4 * a * c;
if (deta == 0) {
System.out.println("X1 = X2 = " + (-b / 2 / a));
} else if (deta > 0) {
p = -b / (2 * a);
q = Math.sqrt(deta) / (2 * a);
System.out.println("X1 = " + (p + q));
System.out.println("X1 = " + (p - q));
} else {
p = -b / (2 * a);
q = Math.sqrt(-deta) / (2 * a);
System.out.println("X1 = " + p + "i" + "+" + q);
System.out.println("X1 = " + p + "i" + "-" + q);
}
}
sc.close();
}
}
No25
import java.util.Scanner;
public class No25 {
public static void main(String[] args) {
int n;
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要打印杨辉三角的行数:");
n = sc.nextInt();
int[][] yang = new int[];
for (int i = 0; i < n; i++) {
yang = new int;
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
yang = 1;
} else {
yang = yang + yang;
}
}
}
for (int p = 0; p < n; p++) {
for (int q = 0; q < yang.length; q++) {
System.out.print(yang + " ");
}
System.out.println();
}
sc.close();
}
}
No26
import java.util.Scanner;
public class No26 {
public static void main(String[] args) {
String s;
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期的第一个字母:");
s = sc.nextLine();
if (run(s.toLowerCase())) {
System.out.println("无法判断,请输入第二个字母:");
s += sc.nextLine();
next(s.toLowerCase());
}
sc.close();
}
static boolean run(String s) {
switch (s) {
case "m":
System.out.println("是星期一,Monday。");
return false;
case "w":
System.out.println("是星期三,Wednesday。");
return false;
case "f":
System.out.println("是星期五,Friday。");
return false;
case "s":
case "t":
return true;
default:
System.out.println("输入有误");
return false;
}
}
static void next(String s) {
switch (s) {
case "su":
System.out.println("是星期日,Sunday。");
break;
case "sa":
System.out.println("是星期六,Saturday。");
break;
case "th":
System.out.println("是星期四,Thursday。");
break;
case "tu":
System.out.println("是星期三,Tuesday。");
break;
default:
System.out.println("输入有误");
break;
}
}
}
No27
这个竟然搞得我有点晕……
public class No27 {
public static void main(String[] args) {
int num = 4;
for (int i = 0; i < num; i++) {
for (int m = 0; m < num - i - 1; m++) {
System.out.print(" ");
}
for (int n = 0; n < i * 2 + 1; n++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 0; i < num - 1; i++) {
for (int m = 0; m < i + 1; m++) {
System.out.print(" ");
}
for (int n = 0; n < (num - i - 1) * 2 - 1; n++) {
System.out.print("*");
}
System.out.println();
}
}
}
No28
public class No28 {
public static void main(String[] args) {
int sum;
System.out.println("10000内的完数有:");
for (int i = 3, j; i < 10000; i++) {
sum = 1;
for (j = 2; j < Math.sqrt(i); j++) {
if (i % j == 0) {
sum += j + (i / j);
}
}
if (j == Math.sqrt(i)) {
sum += j;
}
if (sum == i) {
System.out.println(i);
}
}
}
}
No29
import java.util.Scanner;
public class No29 {
public static void main(String[] args) {
int a, n, sum = 0, temp = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请以此输入a的值和相加的个数,用空格分开");
a = sc.nextInt();
n = sc.nextInt();
for (int i = 0; i < n; i++) {
temp = temp * 10 + 1;
sum += temp;
}
sum *= a;
System.out.println("最后结果为:" + sum);
sc.close();
}
}
No30
public class No30 {
public static void main(String[] args) {
String s1 = "123";
String s2 = "123";
String s3 = new String("123");
String s4 = new String("123");
System.out.println("s1==s2 " + (s1 == s2));
System.out.println("s1==s3 " + (s1 == s3));
System.out.println("s3==s4 " + (s3 == s4));
System.out.println("s1.equals(s2) " + (s1.equals(s2)));
System.out.println("s1.equals(s3) " + (s1.equals(s3)));
System.out.println("s3.equals(s4) " + (s3.equals(s4)));
}
}
这次有几个写的有些乱- -,不会改了,就先这样吧……
另外,新年快乐~{:9_236:}
wwwxinyu1990 发表于 2015-2-15 16:59
来晚了No1:
String str = "a"+"b"+"c";只创建了一个对象,其中"a"、"b"、"c" 都是字符串常量。
...
奥奥,错了~这几天一直没时间,我回头再改下吧{:1_1:}
页:
[1]