现在定义如下的一个数组:intoldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5},要求将以上数组中值为0的去掉,将不为0的值存入一个新的数组,
生成的新数组为:intnewArr[]={1,3,4,5,6,6,5,4,7,6,7,5},并且把这个数组打印出来。请你写出完整的代码。
code如下
首先采用一个计数器,算出非0的数字位数,然后new一个新的数组,再把原来非0的数字放进去。 感觉还可以采用一个vector把非0的数字放进去,在吧它变成数组
public class TestDem {
/*
* 主要是数组不是动态的,需要确定数组的大小。
*/
public static int[] getArry(int[] arr)
{
int count=0;
for(int i=0; i<arr.length; i++)
{
if(arr[i]!=0)
count++;
}
int[] newArr=new int[count];
count=0;
for(int j=0; j<arr.length; j++)
{
if(arr[j]!=0)
{
newArr[count]=arr[j];
count++;
}else
{
continue;
}
}
return newArr;
}
public static void display(int[] arr)
{
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
int[] arr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int[] newArry=getArry(arr);
display(newArry);
}
}
结果如下
1 3 4 5 6 6 5 4 7 6 7 5
已知一个很长的字符串,英文字母之间有很多数字(多位数),要求把所有这样的多位数全部找到(例如bpbn39ewi之间的39).求他们的和
代码如下
关键找出数字字符串,这个可以采用flag判断,连续的次数,为0就是非数字,在把数字字符串转成long形数,放到ArrayList中,在求和就行了。
public class AddSum {
/*
*
* static long parseLong(String s)
将 string 参数解析为有符号十进制 long。
Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值。
*/
public static long addsum(String str)
{
//String str="dffff21retop0py63uytpp16resddddp100oop900kkytwt";
//集合应该放入对象,javad基本类
List<Long> numlist=new ArrayList<Long>();
List<String> chlist=new ArrayList<String>();
int flag=0;
String stg=null;
long sum=0;
for(int i=0; i<str.length(); i++)
{
char c=str.charAt(i);
if(c>='0'&&c<='9')
{
flag++;
System.out.println("-----"+c+"flag:"+flag);
}else
{
System.out.println("第-"+i+"flag:"+flag);
if(flag==0)
continue;
if(flag==1)
{
Character ch=new Character(str.charAt(i-1));
long num=Long.parseLong(ch.toString());
numlist.add(num);
}
if(flag>1)
{
char[] cr=new char[flag];
//注意顺序,不然得到的数字会是反着的。
for(int j=0; j<flag; j++)
cr[flag-j-1]=str.charAt(i-j-1);
String sr=new String(cr);
chlist.add(sr);
}
flag=0;
System.out.println("flag=0的时候continue执行不到这里啊");
}
}
for(int i=0;i<numlist.size(); i++)
System.out.println("*****"+numlist.get(i));
for(int i=0;i<chlist.size(); i++)
{
stg=chlist.get(i);
numlist.add(Long.parseLong(stg));
System.out.println("+++"+chlist.get(i));
}
System.out.println("成功的情况如下");
for(int i=0;i<numlist.size(); i++)
{
System.out.print(numlist.get(i)+" ");
sum+=numlist.get(i);
}
return sum;
}
public static void main(String[] args) {
String str="dffff21retop0py63uytpp16resddddp100oop900kkytwt1gt8ty9999p";
addsum(str);
System.out.print("sum="+addsum(str));
}
}
结果如下
第-0flag:0
第-1flag:0
第-2flag:0
第-3flag:0
第-4flag:0
-----2flag:1
-----1flag:2
第-7flag:2
flag=0的时候continue执行不到这里啊
第-8flag:0
第-9flag:0
第-10flag:0
第-11flag:0
-----0flag:1
第-13flag:1
flag=0的时候continue执行不到这里啊
第-14flag:0
-----6flag:1
-----3flag:2
第-17flag:2
flag=0的时候continue执行不到这里啊
第-18flag:0
第-19flag:0
第-20flag:0
第-21flag:0
-----1flag:1
-----6flag:2
第-24flag:2
flag=0的时候continue执行不到这里啊
第-25flag:0
第-26flag:0
第-27flag:0
第-28flag:0
第-29flag:0
第-30flag:0
第-31flag:0
-----1flag:1
-----0flag:2
-----0flag:3
第-35flag:3
flag=0的时候continue执行不到这里啊
第-36flag:0
第-37flag:0
-----9flag:1
-----0flag:2
-----0flag:3
第-41flag:3
flag=0的时候continue执行不到这里啊
第-42flag:0
第-43flag:0
第-44flag:0
第-45flag:0
第-46flag:0
-----1flag:1
第-48flag:1
flag=0的时候continue执行不到这里啊
第-49flag:0
-----8flag:1
第-51flag:1
flag=0的时候continue执行不到这里啊
第-52flag:0
-----9flag:1
-----9flag:2
-----9flag:3
-----9flag:4
第-57flag:4
flag=0的时候continue执行不到这里啊
*****0
*****1
*****8
+++21
+++63
+++16
+++100
+++900
+++9999
成功的情况如下
0 1 8 21 63 16 100 900 9999 第-0flag:0
第-1flag:0
第-2flag:0
第-3flag:0
第-4flag:0
-----2flag:1
-----1flag:2
第-7flag:2
flag=0的时候continue执行不到这里啊
第-8flag:0
第-9flag:0
第-10flag:0
第-11flag:0
-----0flag:1
第-13flag:1
flag=0的时候continue执行不到这里啊
第-14flag:0
-----6flag:1
-----3flag:2
第-17flag:2
flag=0的时候continue执行不到这里啊
第-18flag:0
第-19flag:0
第-20flag:0
第-21flag:0
-----1flag:1
-----6flag:2
第-24flag:2
flag=0的时候continue执行不到这里啊
第-25flag:0
第-26flag:0
第-27flag:0
第-28flag:0
第-29flag:0
第-30flag:0
第-31flag:0
-----1flag:1
-----0flag:2
-----0flag:3
第-35flag:3
flag=0的时候continue执行不到这里啊
第-36flag:0
第-37flag:0
-----9flag:1
-----0flag:2
-----0flag:3
第-41flag:3
flag=0的时候continue执行不到这里啊
第-42flag:0
第-43flag:0
第-44flag:0
第-45flag:0
第-46flag:0
-----1flag:1
第-48flag:1
flag=0的时候continue执行不到这里啊
第-49flag:0
-----8flag:1
第-51flag:1
flag=0的时候continue执行不到这里啊
第-52flag:0
-----9flag:1
-----9flag:2
-----9flag:3
-----9flag:4
第-57flag:4
flag=0的时候continue执行不到这里啊
*****0
*****1
*****8
+++21
+++63
+++16
+++100
+++900
+++9999
成功的情况如下
0 1 8 21 63 16 100 900 9999 sum=11108
第1题
有一个很长的字符串
yknysjmaazcoeyzjxpbqjklhpmflno klftkyrkgmddxsupkygcyajymhssiwbktddjpubfbtvg bngnrtuwcusewcspisorblkicfsqyrbyjerzvtiqhuhhkuerqoxzbycblepbhsmkkbcofbiyemnd
oshipacmhztfjxueevkaqrbjdxbpoghmxuyruuqaioichmmbwbthisisanswer89712345669827202overnumbervzetsnuvntmqjtnzwoa aatyacxdtnhstdfnkfbckadibybixwzpgcketqospaljavkomnopgbfmzzxgeejsaxlconbywktswlwdvhpvwalvxnqshptcfyfrtzvnfef !eiobbkjtyilnbtqcayxbainnmtycutjkpnarstqcbamzzokyzvwneobybuyddrhipkygyx11qyci
在thisisanswer和overnumber之间有一个数字,已知这个数字的10次方,就是一个系统的密码。求这个密码是多少?
就是找出字符串之间的字符串,在找出数字,不过这个大幂指数计算,我放弃了。 在字符串,大佬可以kmp或者bf算法。
相关的代码
public class AlthDem {
/*
* int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
* String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
char charAt(int index)
返回指定索引处的 char 值。
StringBuilder append(char c)
将 char 参数的字符串表示形式追加到此序列
*/
public static String getNum(String str)
{
String tag1="thisisanswer";
String tag2="overnumber";
String tag=null;
byte[] b;
StringBuilder sb=new StringBuilder();
int x1=str.indexOf(tag1);
int x2=str.indexOf(tag2);
tag=str.substring(x1, x2);
b=tag.getBytes();
System.out.println(tag+" ");
for(int i=0; i<tag.length(); i++)
{
if(tag.charAt(i)>='0'&&tag.charAt(i)<='9')
{
System.out.println(tag.charAt(i));
sb.append(tag.charAt(i));
}
}
String end=new String(sb);
System.out.println(end);
return end;
}
public static void main(String[] args) {
String str="yknysjmaazcoeyzjxpbqjklhpmflno klftkyrkgmddxsupkygcyajymhssiwbktddjpubfbtvg bngnrtuwcusewcspisorblkicfsqyrbyjerzvtiqhuhhkuerqoxzbycblepbhsmkkbcofbiyemnd "
+ " oshipacmhztfjxueevkaqrbjdxbpoghmxuyruuqaioichmmbwbthisisanswer89712345669827202overnumbervzetsnuvntmqjtnzwoa aatyacxdtnhstdfnkfbckadibybixwzpgcketqospal"
+ "javkomnopgbfmzzxgeejsaxlconbywktswlwdvhpvwalvxnqshptcfyfrtzvnfef !eiobbkjtyilnbtqcayxbainnmtycutjkpnarstqcbamzzokyzvwneobybuyddrhipkygyx11qyci";
getNum(str);
}
}
结果如下
thisisanswer89712345669827202
8
9
7
1
2
3
4
5
6
6
9
8
2
7
2
0
2
89712345669827202