【问题标题】:Storing array of strings in specifies variables respectively将字符串数组分别存储在指定变量中
【发布时间】:2016-04-20 14:31:43
【问题描述】:

我是 JAVA 的初学者,我正在编写这段代码,它应该接收一个字符串数组并将每个字符串(数组元素)分别存储在指定的变量中。但它只存储第一个元素。下面是代码:

package ontoretrive;

import org.apache.commons.lang3.ArrayUtils;

public class j {
static String sss= "male,O+,45,saudi,brain_diseases";
static int size =sss.length();

static String male="";
static String blood="";
static String age="";
static String nat="";
static String dis="";
static char temp;
static void func (){
    char[] charArray = sss.toCharArray();
    Character[] charObjectArray = ArrayUtils.toObject(charArray);
    int count=0;
    int x=0;
    while (x< size){
        temp =charObjectArray[x];
while(temp!=','&&count==0){
                male=male+temp;
                x++;
                temp =charObjectArray[x];}
x++;
temp =charObjectArray[x];

count++;            

while(temp!=','&&count==1){
        blood=blood+temp;
        x++;
        temp =charObjectArray[x];}
x++;
temp =charObjectArray[x];
count++;            

while(temp!=','&&count==2){
        age=age+temp;
        x++;
        temp =charObjectArray[x];
}x++;
temp =charObjectArray[x];
count++;            

while(temp!=','&&count==3){
        nat=nat+temp;
        x++;
        temp =charObjectArray[x];
}x++;
temp =charObjectArray[x];
count++;            


while(temp!=','&&count==4){
        dis=dis+temp;
        x++;
        //temp =charObjectArray[x];
        }
x++;
// temp =charObjectArray[x];
count++;    }

System.out.println(male);//end while1
System.out.println(blood);//end while1
System.out.println(age);//end while1
System.out.println(nat);//end while1
System.out.println(dis);//end while1

}//end func
public static void main(String[] args) {
    System.out.println("dis1");
    func();
   System.out.println(male);//end while1

    //System.out.println("dis3");


}
}    //end class

【问题讨论】:

  • 请缩进您的代码以便于阅读。
  • 我认为 String.split(",") 会让你的生活变得更轻松
  • 实际上你陷入了一个无限循环,因为你确实在最后一个循环中注释掉了temp = charObjectArray[x]`(之后你会遇到IOOBE)。无论如何,这是一种读取数组的奇怪方式,我会坚持@BrianAgnew 所说的。

标签: java arrays string


【解决方案1】:
public class j {

    static String sss = "male,O+,45,saudi,brain_diseases";
    static int size = sss.length();

    //I suggest you not to give them a start value or set them as null
    static String male = "";
    static String blood = "";
    static String age = "";
    static String nat = "";
    static String dis = "";

    static void func() {

        //it uses the "," character to breaks the string sss into pieces
        //so became into "male","O+","45","saudi","brain_diseases"
        String[] pieces = sss.split(",");

        //pieces[0] is the first piece so = "male"
        //pieces[1] is the second "O+" and so on
        male = pieces[0];
        blood = pieces[1];
        age = pieces[2];
        nat = pieces[3];
        dis = pieces[4];

        System.out.println(male);
        System.out.println(blood);
        System.out.println(age);
        System.out.println(nat);
        System.out.println(dis);

    }

    public static void main(String[] args) {

        func();        
    }
}

【讨论】:

    【解决方案2】:

    使用 String 的 split() 方法可以更轻松地完成您想做的事情:

    static void func (){
        String[] split = sss.split(",");
        if (split.length < 5) {
            // this means some error in the input, need to handle
        }  
        male=split[0];
        blood=split[1];
        age=split[2];
        nat=split[3];
        dis=split[4];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2016-09-17
      相关资源
      最近更新 更多