Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringTokenizer中不需要的行为_Java_Android_Tokenize - Fatal编程技术网

Java StringTokenizer中不需要的行为

Java StringTokenizer中不需要的行为,java,android,tokenize,Java,Android,Tokenize,我有一个字符串结果=FFF-556-GHH-788;DDR4TG441。我使用StringTokenizer拆分delimeter“;”上的字符串。但我得到的两个子字符串是1->FFF-556-GHH-788和2->DDR4TG441DDR4TG441DDR4TG441。为什么字符串2重复3次 代码: 主要内容: 乐趣: 奇怪的是,当我运行你的代码时,它工作正常。您能否验证问题中的代码与生产中的代码是否匹配 导入java.util.StringTokenizer; 公共类So66650493{

我有一个字符串结果=FFF-556-GHH-788;DDR4TG441。我使用StringTokenizer拆分delimeter“;”上的字符串。但我得到的两个子字符串是1->FFF-556-GHH-788和2->DDR4TG441DDR4TG441DDR4TG441。为什么字符串2重复3次

代码: 主要内容:

乐趣:


奇怪的是,当我运行你的代码时,它工作正常。您能否验证问题中的代码与生产中的代码是否匹配

导入java.util.StringTokenizer; 公共类So66650493{ 公共静态无效字符串[]args{ 字符串结果=FFF-556-GHH-788;DDR4TG441; 最终QRResultData数据=新So66650493.parseResultResult; System.out.printlndatum=+基准; //数据=QRResultData{busNumber='FFF-556-GHH-788',座位号='DDR4TG441'} 如果FFF-556-GHH-788.equalsdatum.busNumber &&DDR4TG441.equalsdatum.seatNumber{ 正确解析System.out.PrintLnsucture; }否则{ System.out.printlnFAIL; } } 公共QRResultData parseResultString结果{ QRResultData数据=新的QRResultData; StringTokenizer multiTokenizer=新StringTokenizerResult;; 如果multiTokenizer.hasMoreTokens{ data.busNumber=multiTokenizer.nextToken; } 如果multiTokenizer.hasMoreTokens{ data.seatNumber=multiTokenizer.nextToken; } 返回数据; } 私有静态类QRResultData{ 字符串总线号; 字符串座位号; @凌驾 公共字符串toString{ 返回qresultdata{+ 总线号='+总线号+'\+ ,seatNumber='+seatNumber+'\+ '}'; } } } 我之前的建议是用String.split替换StringTokenizer,这对您没有多大帮助。但这会让你的代码更加清晰

公共QRResultData parseResultString结果{ QRResultData数据=新的QRResultData; String[]split=Result.split;; data.busNumber=split[0]; 如果split.length>1{ data.seatNumber=split[1]; } 返回数据; }
StringTokenizer是一个遗留类,尽管新代码中不鼓励使用它,但出于兼容性原因保留它。建议任何寻求此功能的人使用StringCheck的split方法检查您在结果字符串中传递的内容。我无法复制它。StringTokenizer multiTokenizer=新StringTokenizerFF-556-GHH-788;DDR4TG441;;Log.iTAG、multiTokenizer.nextToken;Log.iTAG、multiTokenizer.nextToken;日志FFF-556-GHH-788和DDR4TG441不是真正的答案。对不起,我的简短回答无意冒犯任何人。我试图改进它。好的,我从QRCode得到字符串结果;看起来Qrcode编码器有问题你能说出真正的输入是什么吗?那么实际的预期产出呢?
datum = parseResult(Result);
public QRResultData parseResult(String Result)
    {
        QRResultData data = new QRResultData();
        StringTokenizer multiTokenizer = new StringTokenizer(Result, ";");

        if(multiTokenizer.hasMoreTokens())
        {
            data.busNumber = multiTokenizer.nextToken();
        }

        if(multiTokenizer.hasMoreTokens())
        {
            data.seatNumber = multiTokenizer.nextToken();
        }
        return data;
    }