PAT (Basic Level) Practise 的C++实现-1009. 说反话

本文介绍了一种颠倒英语句子中单词顺序的方法,并提供了一个简单的C++程序示例。该程序读取一个包含单词和空格的字符串,然后输出单词顺序颠倒后的句子。

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:
Hello World Here I Come
输出样例:

Come I Here World Hello

    #include <iostream>
    #include <vector>
    #include <string>
    #include <cstring>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    int main() {
        int i, j;
        string word;
        string wordx;
        vector <string> stc;
        getline(cin, word);
        for (i = 0,j=0; i < word.length(); i++) {
            if (word[i] != ' ') {
                wordx += word[i];
            }
            else {
                stc.push_back(wordx);
                wordx = {};
            }
        }
        stc.push_back(wordx);
        cout<< stc.back();
        stc.pop_back();
        while(!stc.empty()){
        cout<<" "<<stc.back();
        stc.pop_back();
        }
        return 0;
    }

想输入想了半天,发现cin>>不能区分空格和换行,遂放弃,想用strtok,但是没有实现。。。

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project hertzbeat-otel: Compilation fai lure: Compilation failure: [ERROR] 读取C:\Users\DE-LL\.m2\repository\io\opentelemetry\opentelemetry-sdk-logs\1.49.0\opentelemetry-sdk-logs-1.49.0.jar时出错; zip file is empty [ERROR] /F:/Practise/hertzbeat-master/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryLogbackAppenderInstaller.java:[19,1] 无 法访问org.apache.hertzbeat.otel.config [ERROR] ZipException opening "opentelemetry-sdk-logs-1.49.0.jar": zip END header not found [ERROR] /F:/Practise/hertzbeat-master/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/LogAutoConfiguration.java:[34,8] 无法访问org.apache. hertzbeat.otel [ERROR] ZipException opening "opentelemetry-sdk-logs-1.49.0.jar": zip END header not found [ERROR] /F:/Practise/hertzbeat-master/hertzbeat-otel/src/main/java/org/apache/hertzbeat/otel/config/OpenTelemetryConfig.java:[50,8] 无法访问org.apache.h ertzbeat [ERROR] ZipException opening "opentelemetry-sdk-logs-1.49.0.jar": zip END header not found [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <args> -rf :hertzbeat-otel 解决错误
最新发布
09-02
<think> 我们遇到的问题是:在编译hertzbeat-otel项目时,Maven报错Compilation failure,具体是读取opentelemetry-sdk-logs-1.49.0.jar时出错,提示zip文件为空和zip END header not found。这个问题通常是因为jar包下载不完整或损坏导致的。 参考引用[1]和[2]中的类似问题,我们可以采取以下步骤解决: ### 解决步骤 1. **清理本地Maven仓库中损坏的jar包** - 定位到本地Maven仓库中`opentelemetry-sdk-logs-1.49.0.jar`文件的位置,通常路径为: `~/.m2/repository/io/opentelemetry/opentelemetry-sdk-logs/1.49.0/` - 删除整个`1.49.0`目录(或者至少删除其中的`opentelemetry-sdk-logs-1.49.0.jar`文件) 2. **强制Maven重新下载依赖** - 在项目根目录下执行以下Maven命令,强制重新下载所有依赖: ```bash mvn clean install -U ``` 其中`-U`参数表示强制更新快照依赖。 3. **检查网络和Maven仓库配置** - 确保网络连接正常,能够访问Maven中央仓库(或项目配置的镜像仓库)。 - 检查Maven的`settings.xml`文件,确认镜像仓库配置正确(例如使用阿里云镜像加速下载): ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 4. **检查IDEA的Maven配置(如果使用IDEA)** - 参考引用[2]和[4],确认IDEA使用的是自己安装的Maven,而不是自带的Maven。 - 在IDEA中:`File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven`,检查以下配置: - `Maven home path`:指向自己安装的Maven路径(非IDEA内置) - `User settings file`:确认使用的是正确的`settings.xml` - 同时检查项目的JDK版本是否与`pom.xml`中指定的版本一致(引用[4])。 5. **如果问题仍然存在** - 尝试删除整个本地仓库(`~/.m2/repository`),然后重新运行`mvn install`(注意:这将重新下载所有依赖,耗时长)。 - 或者单独删除`io/opentelemetry`目录,然后重新构建。 ### 问题原因分析 - **zip END header not found**:这通常意味着下载的jar包不完整(网络中断、磁盘空间不足等导致下载中断)。 - **jar文件为空**:可能是下载过程中出现错误,导致文件大小为0。 ### 相关问题 1. 如何避免Maven下载依赖时出现损坏的jar包? 2. 如何在IDEA中配置Maven镜像仓库加速下载? 3. 除了删除本地仓库,还有哪些方法可以修复Maven依赖问题? </think> ### 解决Maven编译中jar包损坏导致的Compilation Failure错误 您的错误是由于`opentelemetry-sdk-logs-1.49.0.jar`文件损坏造成的,表现为: - **zip END header not found**:文件结构损坏 - **zip文件为空**:下载不完整 以下是系统性的解决方法: --- ### 解决步骤 1. **清理损坏的jar包** 删除本地仓库中的损坏文件: ```bash # Windows路径示例 del /q /s "%USERPROFILE%\.m2\repository\io\opentelemetry\opentelemetry-sdk-logs\1.49.0\*.jar" # Linux/macOS路径示例 rm -rf ~/.m2/repository/io/opentelemetry/opentelemetry-sdk-logs/1.49.0/*.jar ``` 2. **强制Maven重新下载依赖** 在项目目录执行: ```bash mvn clean install -U -Dmaven.test.skip=true ``` - `-U`:强制更新所有快照依赖 - `-Dmaven.test.skip`:跳过测试加速过程 3. **检查Maven仓库配置** 在`settings.xml`中配置镜像加速(阿里云示例): ```xml <mirror> <id>aliyun</id> <mirrorOf>*</mirrorOf> <name>阿里云仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 4. **验证IDE配置**(针对IntelliJ IDEA用户) - 检查JDK版本:`File > Project Structure`确保与`pom.xml`的`<java.version>`一致[^4] - 确认使用外部Maven: `Settings > Build Tools > Maven > Maven home path`(非Bundled版本) 5. **网络问题排查** - 如果出现类似引用[3]的仓库屏蔽错误: ```xml <!-- pom.xml中添加仓库信任 --> <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories> ``` --- ### 根本原因分析 | 现象 | 原因 | 解决方案 | |------|------|----------| | `zip END header not found` | 下载中断或磁盘错误 | 清除文件并重试 | | `jar文件为空` | Maven缓存未完整写入 | 使用`-U`参数强制更新 | | 编译阻塞 | 依赖仓库被屏蔽 | 配置镜像仓库或更换网络 | > **重要提示**:此类错误95%由网络问题或IDE缓存导致,优先执行步骤1-2可解决多数情况[^1][^2]。 --- ### 相关问题 1. 如何防止Maven依赖下载不完整? > 答:定期执行`mvn dependency:purge-local-repository`清理本地仓库。 2. IDEA中如何彻底清除Maven缓存? > 答:`File > Invalidate Caches` + 手动删除`~/.m2/repository`目录。 3. 为什么相同依赖在不同项目中表现不同? > 答:可能因`settings.xml`多版本冲突,需检查全局/项目配置优先级。 4. 如何验证jar包完整性? > 答:用`unzip -t opentelemetry-sdk-logs-1.49.0.jar`测试解压完整性。 [^1]: 下载中断导致jar不完整引发zip结构错误 [^2]: IDEA缓存机制可能造成文件写入异常 [^3]: 仓库屏蔽会导致依赖下载失败 [^4]: JDK版本不一致会引发编译兼容性问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值