成都网站建设设计

将想法与焦点和您一起共享

patjava代码 pat java

JAVA中,将4个属性存放到一个数组中,并且利用scanner获取输入的,怎么弄啊?

scanner是输入,不是输出,你获取的话只能使用打印的语句,数组的话你可以定义一个String类型的数组,输入价格和重量的话有点麻烦,因为两个值必须是数值类型,解决办法就是使用正则表达式验证.具体代码如下:

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、外贸网站建设、松滋网络推广、小程序定制开发、松滋网络营销、松滋企业策划、松滋品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供松滋建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

import java.util.Scanner;

import java.util.regex.Pattern;

public class test{

//正则表达式判断数数字的方法

private static boolean isNum(String str){

Pattern pat = Pattern.compile("([1-9]+[0-9]*|0)(\\.[\\d]+)?");

return pat.matcher(str).matches();

}

public static void main(String[] args) {

String [] info = new String[4];

//创建输入对象

Scanner input = new Scanner(System.in);

//输入汽车信息

System.out.print("请输入汽车品牌:");

info[0] = input.next();

System.out.print("请输入汽车价格(万元):");

info[1] = input.next();

System.out.println(isNum(info[1]));

while (isNum(info[1])==false) {

System.out.print("你输入的价格是非法的!");

System.out.println("");

System.out.print("请输入汽车价格(万元):");

info[1] = input.next();

}

System.out.print("请输入汽车的颜色:");

info[2] = input.next();

System.out.print("请输入汽车的重量(千克):");

info[3] = input.next();

while (isNum(info[3])==false) {

System.out.print("你输入的重量是非法的!");

System.out.println("");

System.out.print("请输入汽车的重量(千克):");

info[3] = input.next();

}

//输出汽车信息

System.out.println(" ");

System.out.println("该汽车的信息如下:");

System.out.println("汽车品牌:"+info[0]);

System.out.println("汽车价格:"+info[1]+"万元");

System.out.println("汽车颜色:"+info[2]);

System.out.println("汽车重量:"+info[3]+"千克");

}

}

JAVA 替换特殊字符 的 正则表达式

JAVA 替换特殊字符 的 正则表达式

代码如下:

import java.util.regex.*;

// 表达式对象

Pattern p = Pattern.compile("[\\\'\\*\\~]");

// 创建 Matcher 对象

Matcher m = p.matcher("String str = \"t\'e*s~t\";  ");

// 替换

String newstring = m.replaceAll("[$0]");

效果如下:

正则参考 

pat.1015 java版 问题

Student a = new Student();

for (int temp = 0; temp count; temp++) {

///////////////////////////////

这里for 循环操作的只有一个Student.也就是你在循环给这一个对象的属性赋值。最后肯定都是最后一次的值。把对象new到for里面。

java:输入某年某月,判断这一年与这一月分别距离1900年1月1日多少天?

你好,代码如下:

import java.text.* ;

import java.util.* ;

public class DateDemo{

public static void main(String args[]) throws Exception{

System.out.println("请输入一个日期,格式为(yyyy-mm-dd,如2000-01-01):") ;

Scanner sc = new Scanner(System.in) ;

String strDate = sc.next() ;

String pat = "yyyy-MM-dd" ;

SimpleDateFormat sdf = new SimpleDateFormat(pat) ; // 实例化模板对象

Date d1 = sdf.parse(strDate) ;

String str = "1900-01-01" ;

Date d2 = sdf.parse(str) ;

long day = (d1.getTime() - d2.getTime()) /(1000*24*60*60) + 1 ;

System.out.println("相差" + day + "天。");

}

};

1005. 继续(3n+1)猜想pat-Java

UVa3n+1问题1.问题描述编号:100.简单描述:就是对一个整数(大于等于1),不断按照这样的规律进行运算,即如果当前数是偶数,则下一个数为当前数除以2,如果当前数为奇数,则下一个数为当前数乘3加1,整个过程直到计算到1为止.那么形成的数列的长度称为cycle-length.问题的输入是:给定一个区间[a,b]问题的输出为:输出给定区间(含端点)所以数的cycle-length的最大的cycle-length.详细描述可参见这里.2.问题分析2.1直观分析最直观的方法当然是采用蛮力法(即brute-force),将给定区间的每个数求出其cycle-length,然后在所以的cycle-length中找出最大的即可.2.2优化优化是建立在分析的基础之上.我们先对一个简单例子进行实验.例如给定区间为B[1,10],即1,2,3,4,5,6,7,8,9,10通过简单分析我们可以知道,通常较大的数具有较大的cycle-length,所以我们可以首先取A=9(为什么不取10,是因为9在一次处理后可变为28,大于10)按照给定的规律来进行如下:928147221134175226134020105168421可以看出,上面红色标记的部分,处于给定的区间内,而且它们的cycle-length显然是小于当前的数9的cycle-length,所以这些数可以从给定的区间内剔除掉,记住当前的cycle-length,于是经过一次的操作后,给定的区间变为3,6继续按照这个方法进行,直至这个区间为空,停止,其中最大的cycle-length即为所求.2.3得出算法算法的描述同2.2处优化部分的分析,具体的算法描述可见3.3.算法描述算法伪代码(类C)描述如下:functiongetMCLB[left,right];//为给定的区间mcl=0;//mcl指max-cycle-lengthwhile!B.empty(){A=getCandidate(B);//这个函数是用来找出B区间内当前最适合处理的元素,//一般是最大的奇数,即预计可能具有较大cycle-length的元素ccl=1;//ccl是指current-cycle-lengthwhile(A!=1){ccl++;A=(A%2)?(3*A+1):(A/2);iffind(B,A)//这个函数是用来判断B区间内是否存在中间结果Apop(B,A);//有则剔除}mcl=(mcl4.具体实现Cpp代码#include"iostream"usingnamespacestd;intgetCandidate(intB[],intbase,intn){inti;for(i=n-1;i=0;i--){if(((base+i)%2)(B[i]==0))returni;}for(i=n-1;i=0;i--){if(!B[i])returni;}return-1;}intnadd2(intleft,intright){intBlength=right-left+1;intlength=Blength;int*B=newint[length];for(inti=0;i0){intccl=1;intpos=getCandidate(B,left,Blength);if(pos==-1)break;B[pos]=1;length--;intA=pos+left;while(A!=1){ccl++;A=(A%2)?(3*A+1):(A/2);intApos;if((A-leftBlength)||(B[A-left])||(Aleftright)cout5.复杂性分析主要的耗时部分是二层循环部分,而外层循环的次数主要取决于内层循环在区间内的命中率.没有进行过统计学的分析,但只要candidate选取合适,每次内层循环会有大于50%的命中率.假设区间内数A的内层循环次数(即由A按照规则变为1的cycle-length)为X,平均命中率为p,那么时间复杂度为:T(n)=X*T(n*(1-p))//其中X为平均的cycle-length6.备注在实现过程中,最初使用的是C++中的vector,但运行时的实际耗时比使用数组的蛮力法还要长,经过分析,这是因为编译器在维护vector这个数据结构时所耗时长是比较大的,特别是当使用vector的earse方法来删除某个特定元素时.所以最后还是使用最基本的数组来实现,用标记来指示删除状态.所以在实际的算法实现中,数据结构的选取也是非常重要的,所谓的程序=算法+数据结构是也.可以改进的地方包括有:getCandidate函数的算法,即如何预估一个具有较长cycle-length的元素;还有当内层循环出现在区间内已标记为删除状态的元素中时,这时内层循环可终止.


网页名称:patjava代码 pat java
网页路径:http://chengdu.cdxwcx.cn/article/dodipoi.html