首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
14,232 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
11,468 阅读
3
gradle-5.4.1-all.zip下载
9,507 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
8,203 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
7,018 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
617
篇文章
累计收到
629
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
452
篇与
的结果
2020-10-19
按照第一行代码使用ToolBar报错。
Unable to start activity ComponentInfo{cn.lanol.studykongjian/cn.lanol.studykongjian.MainActivity}: android.view.InflateException: Binary XML file line #11 in cn.lanol.studykongjian:layout/activity_main: Binary XML file line #11 in cn.lanol.studykongjian:layout/activity_main: Error inflating class android.support.v7.widget.Toolbar经过尝试发现,现在似乎ToolBar不能像书上那样写了。<android.support.v7.widget.Toolbar android:id="@+id/toolBar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />应该这样写<androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
2020年10月19日
794 阅读
0 评论
0 点赞
2020-10-15
Android webView打开网页
这个就比较简单了,直接拖一个控件,再加载一下url,记得在AndroidManifest.xml中加一下权限WebView webView = findViewById(R.id.web); String url = "https://www.lanol.cn"; webView.loadUrl(url);<uses-permission android:name="android.permission.INTERNET" />还有下面的就是网上的一些文章,留以记录Android WebView:https://www.jianshu.com/p/b6f2f1334053生命周期:onResume():活跃状态,可以正常执行网页的响应。onPause():暂停状态,页面被失去焦点,暂停所有进行中的动作,如:DOM解析、CSS和JavaScript执行等。pauseTimers():全局WebView暂停状态,如:layout、parsing、javascripttimer等。resumeTimers():恢复到pauseTimers()执行前的状态。destroy():销毁状态,释放资源。注意:使用WebView不当容易引起内存泄漏,所以WebView的生命周期方法应跟随Activity的生命周期的方法来调用。WebSettings控件的相关配置WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true); -> 是否开启JS支持 webSettings.setPluginsEnabled(true); -> 是否开启插件支持 webSettings.setJavaScriptCanOpenWindowsAutomatically(true); -> 是否允许JS打开新窗口 webSettings.setUseWideViewPort(true); -> 缩放至屏幕大小 webSettings.setLoadWithOverviewMode(true); -> 缩放至屏幕大小 webSettings.setSupportZoom(true); -> 是否支持缩放 webSettings.setBuiltInZoomControls(true); -> 是否支持缩放变焦,前提是支持缩放 webSettings.setDisplayZoomControls(false); -> 是否隐藏缩放控件 webSettings.setAllowFileAccess(true); -> 是否允许访问文件 webSettings.setDomStorageEnabled(true); -> 是否节点缓存 webSettings.setDatabaseEnabled(true); -> 是否数据缓存 webSettings.setAppCacheEnabled(true); -> 是否应用缓存 webSettings.setAppCachePath(uri); -> 设置缓存路径 webSettings.setMediaPlaybackRequiresUserGesture(false); -> 是否要手势触发媒体 webSettings.setStandardFontFamily("sans-serif"); -> 设置字体库格式 webSettings.setFixedFontFamily("monospace"); -> 设置字体库格式 webSettings.setSansSerifFontFamily("sans-serif"); -> 设置字体库格式 webSettings.setSerifFontFamily("sans-serif"); -> 设置字体库格式 webSettings.setCursiveFontFamily("cursive"); -> 设置字体库格式 webSettings.setFantasyFontFamily("fantasy"); -> 设置字体库格式 webSettings.setTextZoom(100); -> 设置文本缩放的百分比 webSettings.setMinimumFontSize(8); -> 设置文本字体的最小值(1~72)webSettings.setDefaultFontSize(16); -> 设置文本字体默认的大小 webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); -> 按规则重新布局 webSettings.setLoadsImagesAutomatically(false); -> 是否自动加载图片 webSettings.setDefaultTextEncodingName("UTF-8"); -> 设置编码格式 webSettings.setNeedInitialFocus(true); -> 是否需要获取焦点 webSettings.setGeolocationEnabled(false); -> 设置开启定位功能 webSettings.setBlockNetworkLoads(false); -> 是否从网络获取资源WebViewClient控件客户端,用于处理各种通知和请求事件。onPageStarted():页面开始加载时调用,这时候可以显示加载进度条,让用户耐心等待页面的加载。onPageFinished():页面完成加载时调用,这时候可以隐藏加载进度条,提醒用户页面已经完成加载。onLoadResource():页面每次加载资源时调用。shouldOverrideUrlLoading():WebView加载url默认会调用系统的浏览器,通过重写该方法,实现在当前应用内完成页面加载。onReceivedError():页面加载发生错误时调用,这时候可以跳转到自定义的错误提醒页面,总比系统默认的错误页面美观,优化用户体验。onReceivedHttpError():页面加载请求时发生错误。onReceivedSslError():页面加载资源时发生错误。shouldOverrideKeyEvent():覆盖按键默认的响应事件,这时候可以根据自身的需求在点击某些按键时加入相应的逻辑。onScaleChanged():页面的缩放比例发生变化时调用,这时候可以根据当前的缩放比例来重新调整WebView中显示的内容,如修改字体大小、图片大小等。shouldInterceptRequest():可以根据请求携带的内容来判断是否需要拦截请求。WebViewClient webViewClient = new WebViewClient(){ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { } @Override public void onPageFinished(WebView view, String url) { } @Override public boolean onLoadResource(WebView view, String url) { } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; -> 消费事件终止传递 } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){ view.loadUrl("file:///android_assets/error.html"); -> assets目录下放置文件}webView.setWebViewClient(webViewClient);WebChromeClient浏览器客户端,用于处理网站图标、网站标题、网站弹窗等。onProgressChanged():页面加载进度发生变化时调用,可以通过该方法实时向用户反馈加载情况,如显示进度条等。onReceivedIcon():接收Web页面的图标,可以通过该方法把图标设置在原生的控件上,如Toolbar等。onReceivedTitle():接收Web页面的标题,可以通过该方法把图标设置在原生的控件上,如Toolbar等。onJsAlert():处理JS的Alert对话框。onJsPrompt():处理JS的Prompt对话框。onJsConfirm():处理JS的Confirm对话框。onPermissionRequest():Web页面请求Android权限时调用。onPermissionRequestCanceled():Web页面请求Android权限被取消时调用。onShowFileChooser():Web页面上传文件时调用。getVideoLoadingProgressView():自定义媒体文件播放加载时的进度条。getDefaultVideoPoster():设置媒体文件默认的预览图。onShowCustomView():媒体文件进入全屏时调用。onHideCustomView():媒体文件退出全屏时调用。WebChromeClient webChromeClient = new WebChromeClient();Android调用JS语法:webView.loadUrl("javascript:method()");在Web页面中定义两个Js方法,分别是有返回值和无返回值。let name = ''; function setter(name){ this.name = name; } function getter(){ return this.name; }在Android中通过WebView调用Js方法String setter = "javascript:setter('"+"wjx"+"');"; webView.loadUrl(setter); -> 调用有参无返回值的函数 webView.evaluateJavascript("getter()", new ValueCallback<String>() { @Override public void onReceiveValue(String s) { -> 调用无参有返回值的函数 System.out.println("my name is "+s); }});七、Js调用AndroidwebView.addJavascriptInterface(this, "bridge"); -> 建立通讯桥梁 webView.removeJavascriptInterface("bridge"); -> 移除通讯桥梁在Android中定义一个方法,标记为Js接口@JavascriptInterfacepublic void toast(String toast){ Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show(); }在Web页面中调用Android方法function toast(toast){ javascript:bridge.toast(toast); -> 通过桥梁调用方法 window.bridge.toast(toast); -> 通过桥梁调用方法}Android WebView基本使用:https://blog.csdn.net/lowprofile_coding/article/details/77928614加载html四种方式webView.loadUrl("https://gitlab.com/Vastsa/lanpicbed/-/raw/master/");//加载url webView.loadUrl("file:///android_asset/test.html");//加载asset文件夹下html //方式3:加载手机sdcard上的html页面 webView.loadUrl("content://com.ansen.webview/sdcard/test.html"); //方式4 使用webview显示html代码 webView.loadDataWithBaseURL(null,"<html><head><title> 欢迎您 </title></head>" + "<body><h2>使用webview显示 html代码</h2></body></html>", "text/html" , "utf-8", null);WebViewClient与WebChromeClient区别使用WebView基本都会使用这两个类,那他们有哪些区别呢?WebViewClient主要帮助WebView处理各种通知、请求事件的,有以下常用方法:- onPageFinished 页面请求完成- onPageStarted 页面开始加载- shouldOverrideUrlLoading 拦截url- onReceivedError 访问错误时回调,例如访问网页时报错404,在这个方法回调的时候可以加载错误页面。WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等,有以下常用方法。- onJsAlert webview不支持js的alert弹窗,需要自己监听然后通过dialog弹窗- onReceivedTitle 获取网页标题- onReceivedIcon 获取网页icon- onProgressChanged 加载进度回调简单使用因为需要加载网页url,所以需要在AndroidManifest.xml中添加访问网络权限。<uses-permission android:name="android.permission.INTERNET" />1布局文件:activity_main.xml<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> <ProgressBar android:id="@+id/progressbar" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="3dip" android:max="100" android:progress="0" android:visibility="gone"/> </FrameLayout>外层FrameLayout,里面有WebView跟ProgressBar,WebView的宽高匹配父类,ProgressBar横向进度条,高度3dip,按照FrameLayout布局规则,ProgressBar会覆盖在WebView之上,默认是隐藏不显示。MainActivity.javapublic class MainActivity extends AppCompatActivity { private WebView webView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar= (ProgressBar)findViewById(R.id.progressbar);//进度条 webView = (WebView) findViewById(R.id.webview); // webView.loadUrl("file:///android_asset/test.html");//加载asset文件夹下html webView.loadUrl("http://139.196.35.30:8080/OkHttpTest/apppackage/test.html");//加载url //使用webview显示html代码 // webView.loadDataWithBaseURL(null,"<html><head><title> 欢迎您 </title></head>" + // "<body><h2>使用webview显示 html代码</h2></body></html>", "text/html" , "utf-8", null); webView.addJavascriptInterface(this,"android");//添加js监听 这样html就能调用客户端 webView.setWebChromeClient(webChromeClient); webView.setWebViewClient(webViewClient); WebSettings webSettings=webView.getSettings(); webSettings.setJavaScriptEnabled(true);//允许使用js /** * LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据 * LOAD_DEFAULT: (默认)根据cache-control决定是否从网络上取数据。 * LOAD_NO_CACHE: 不使用缓存,只从网络获取数据. * LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。 */ webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存,只从网络获取数据. //支持屏幕缩放 webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true); //不显示webview缩放按钮 // webSettings.setDisplayZoomControls(false); } //WebViewClient主要帮助WebView处理各种通知、请求事件 private WebViewClient webViewClient=new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) {//页面加载完成 progressBar.setVisibility(View.GONE); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) {//页面开始加载 progressBar.setVisibility(View.VISIBLE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.i("ansen","拦截url:"+url); if(url.equals("http://www.google.com/")){ Toast.makeText(MainActivity.this,"国内不能访问google,拦截该url",Toast.LENGTH_LONG).show(); return true;//表示我已经处理过了 } return super.shouldOverrideUrlLoading(view, url); } }; //WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等 private WebChromeClient webChromeClient=new WebChromeClient(){ //不支持js的alert弹窗,需要自己监听然后通过dialog弹窗 @Override public boolean onJsAlert(WebView webView, String url, String message, JsResult result) { AlertDialog.Builder localBuilder = new AlertDialog.Builder(webView.getContext()); localBuilder.setMessage(message).setPositiveButton("确定",null); localBuilder.setCancelable(false); localBuilder.create().show(); //注意: //必须要这一句代码:result.confirm()表示: //处理结果为确定状态同时唤醒WebCore线程 //否则不能继续点击按钮 result.confirm(); return true; } //获取网页标题 @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); Log.i("ansen","网页标题:"+title); } //加载进度回调 @Override public void onProgressChanged(WebView view, int newProgress) { progressBar.setProgress(newProgress); } }; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.i("ansen","是否有上一个页面:"+webView.canGoBack()); if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK){//点击返回按钮的时候判断有没有上一页 webView.goBack(); // goBack()表示返回webView的上一页面 return true; } return super.onKeyDown(keyCode,event); } /** * JS调用android的方法 * @param str * @return */ @JavascriptInterface //仍然必不可少 public void getClient(String str){ Log.i("ansen","html调用客户端:"+str); } @Override protected void onDestroy() { super.onDestroy(); //释放资源 webView.destroy(); webView=null; } }onCreate 查找控件,给webView设置加载url,添加js监听,监听的名称是”android”,设置webChromeClient跟webViewClient回调,通过getSettings方法获取WebSettings对象,设置允许加载js,设置缓存模式,支持缩放。webViewClient 重写了几个方法,onPageFinished页面加载完成隐藏进度条,onPageStarted页面开始加载显示进度条,shouldOverrideUrlLoading拦截url,如果请求url是打开google,不让他请求,因为google在国内不能访问,就算请求也请求不到还不如拦截掉,直接告诉用户不能访问。webChromeClient onJsAlert()因为WebView不支持alert弹窗,在这个方法中用AlertDialog去弹窗。onReceivedTitle获取网页标题。onProgressChanged页面加载进度,把加载进度给progressBar。onKeyDown 如果点击系统自带返回键&&webView有上一级页面,调用goBack返回。否则不处理。什么时候辉有上一级页面呢?就是你从首页跳转到了一个新页面,点击返回的时候会返回首页。如果本来就在首页点击返回的时候会退出app。getClient html页面的JS可以通过这个方法回调原生APP,这个方法有个注解@JavascriptInterface,这个是必须的,这个方法有个字符串参数,这个方法跟我们在onCreate中调用addJavascriptInterface传入的name一起使用的。例如html中想要回调这个方法可以这样写:javascript:android.getClient(“传一个字符串给客户端”);onDestroy activity销毁时释放webView资源。
2020年10月15日
938 阅读
0 评论
0 点赞
2020-10-15
Android VideoView播放视频
今天的任务是所以先来记录一下VideoView经过一番操作之后,视频总算是放出来了而且这个只是本地的视频,我播放网络的视频总是出现然后报错2020-10-15 10:07:12.914 11984-11984/cn.lanol.studykongjian V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@37be89c): Cookies: null2020-10-15 10:07:12.916 11984-11984/cn.lanol.studykongjian E/MediaPlayerNative: Unable to create media player2020-10-15 10:07:12.918 11984-11984/cn.lanol.studykongjian W/VideoView: Unable to open content: https://gitlab.com/Vastsa/lanpicbed/-/raw/master/视频地址.mp4 java.io.IOException: setDataSource failed.: status=0x80000000 at android.media.MediaPlayer.nativeSetDataSource(Native Method) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1175) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1162) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1079) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1100) at android.widget.VideoView.openVideo(VideoView.java:412) at android.widget.VideoView.access$2200(VideoView.java:83) at android.widget.VideoView$7.surfaceCreated(VideoView.java:694) at android.view.SurfaceView.updateSurface(SurfaceView.java:1153) at android.view.SurfaceView.lambda$new$0$SurfaceView(SurfaceView.java:173) at android.view.-$$Lambda$SurfaceView$w68OV7dB_zKVNsA-r0IrAUtyWas.onPreDraw(Unknown Source:2) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1093) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3089) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) at android.view.Choreographer.doCallbacks(Choreographer.java:796) at android.view.Choreographer.doFrame(Choreographer.java:731) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)2020-10-15 10:07:12.918 11984-11984/cn.lanol.studykongjian D/VideoView: Error: 1,0于是暂时先放弃了,反正比赛也是无网环境。起初播放本地视频也是如此,但后来发现是因为权限的原因,所以需要在AndroidManifest.xml中加入<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />然后还需要在Activity中动态申请权限int permission = ActivityCompat.checkSelfPermission(videoVIew.this, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(videoVIew.this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); video.start(); }然后在提示授权的时候点击允许然后就没什么好说的了,这是Activity全部代码package cn.lanol.studykongjian; import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; import android.widget.MediaController; import android.widget.VideoView; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; public class videoVIew extends AppCompatActivity { private final int REQUEST_EXTERNAL_STORAGE = 1; private String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_view); //设置视频地址 String videoUrl1 = Environment.getExternalStorageDirectory().getPath()+"/onceok.mp4" ; //找到视频控件进行一系列设置 VideoView video = findViewById(R.id.video); video.setMediaController(new MediaController(this)); video.setVideoPath(videoUrl1); int permission = ActivityCompat.checkSelfPermission(videoVIew.this, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(videoVIew.this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); video.start(); } } }-------------------------------------------------------------------播放URL视频提示Can't play this video的问题解决了,因为没有加网络权限,所以需要在AndroidManifest.xml中加入<uses-permission android:name="android.permission.INTERNET" />然后就是设置播放URLUri uri = Uri.parse("https://gitlab.com/Vastsa/lanpicbed/-/raw/master/播放地址.mp4") video.setVideoURI(uri);
2020年10月15日
1,315 阅读
0 评论
0 点赞
2020-10-14
最长递增子序列
【问题描述】在数列 a[1], a[2], ..., a[n] 中,如果 a[i] < a[i+1] < a[i+2] < ... < a[j],则称 a[i] 至 a[j] 为一段递增序列,长度为 j-i+1。给定一个数列,请问数列中最长的递增序列有多长。【输入格式】输入的第一行包含一个整数 n。第二行包含 n 个整数 a[1], a[2], ..., a[n],相邻的整数间用空格分隔,表示给定的数列。【输出格式】输出一行包含一个整数,表示答案。【样例输入】75 2 4 1 3 7 2【样例输出】3【评测用例规模与约定】对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class 最长递增 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int[] b = new int[a]; for (int i = 0; i < b.length; i++) { b[i] = sc.nextInt(); } sc.close(); List<Integer> result = new ArrayList<Integer>(); for (int i = 0; i < b.length; i++) { int count = 1; for (int j = i; j < b.length-1; j++) { if (b[j]<b[j+1]) { count++; }else { break; } } result.add(count); } System.out.println(Collections.max(result)); } }
2020年10月14日
1,125 阅读
0 评论
0 点赞
2020-10-14
音节判断
【问题描述】小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。【输入格式】输入一行,包含一个单词,单词中只包含小写英文字母。【输出格式】输出答案,或者为yes,或者为no。【样例输入】lanqiao【样例输出】yes【样例输入】world【样例输出】no【评测用例规模与约定】对于所有评测用例,单词中的字母个数不超过100。import java.util.*; public class 音节判断 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); List<String> b = new ArrayList<String>(); String[] t = new String[] { "false", "true", "false", "true" }; char[] a = sc.next().toCharArray(); for (int i = 0; i < a.length; i++) { String c = String.valueOf(isyuanyin(a[i])); if (i > 1) { if (c == b.get(b.size() - 1)) { continue; } else { b.add(c); } } else { b.add(c); } } boolean flag = true; for (int i = 0; i < b.size(); i++) { if (t[i] != b.get(i)) { flag = false; break; } } if (b.size() < 4) { System.out.println("no"); } else { if (flag) { System.out.println("yes"); } else { System.out.println("no"); } } } // 判断是否是元音 public static boolean isyuanyin(char i) { char[] b = { 'a', 'e', 'i', 'o', 'u' }; boolean result = false; for (int j = 0; j < b.length; j++) { if (i == b[j]) { result = true; break; } } return result; } }
2020年10月14日
724 阅读
0 评论
1 点赞
2020-10-12
缩位求和
标题:缩位求和在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。比如:248 * 15 = 3720把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得2 + 4 + 8 = 14 ==> 1 + 4 = 5;1 + 5 = 65 * 6而结果逐位求和为 35 * 6 的结果逐位求和与3符合,说明正确的可能性很大!!(不能排除错误)请你写一个计算机程序,对给定的字符串逐位求和:输入为一个由数字组成的串,表示n位数(n<1000);输出为一位数,表示反复逐位求和的结果。例如:输入:35379程序应该输出:9再例如:输入:7583676109608471656473500295825程序应该输出:1资源约定:峰值内存消耗(含虚拟机) < 256MCPU消耗 < 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。不要使用package语句。不要使用jdk1.7及以上版本的特性。主类的名字必须是:Main,否则按无效代码处理。import java.util.Scanner; public class 缩位求和 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String num = sc.next(); while (num.length()!=1){ int temp = 0; for (int i = 0; i < num.length(); i++) { temp+=num.charAt(i)-'0'; } num = String.valueOf(temp); } System.out.println(num); } }
2020年10月12日
815 阅读
0 评论
0 点赞
2020-10-10
安卓MPAndroidChart绘制水平柱状图
这个和垂直柱状图一模一样,只不过把控件名换了一下从barchart换成了HorizontalBarChartXML文件<LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="水平柱状图" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:orientation="vertical"> <com.github.mikephil.charting.charts.HorizontalBarChart android:id="@+id/horizontalBarChart" android:layout_width="match_parent" android:layout_height="150dp" /> </LinearLayout>MainActivity//初始化水平柱状图 HorizontalBarChart horizontalBarChart = findViewById(R.id.horizontalBarChart); initBarChart(horizontalBarChart); horizontalBarChart.setData(setBarData()); barChart.invalidate(); public BarChart initBarChart(BarChart barChart) { barChart.setDrawBarShadow(false); // 设置每条柱子的阴影不显示 barChart.setDrawValueAboveBar(true); // 设置每条柱子的数值显示 barChart.setPinchZoom(false); XAxis xAxis = barChart.getXAxis(); // 获取柱状图的x轴 YAxis yAxisLeft = barChart.getAxisLeft(); // 获取柱状图左侧的y轴 YAxis yAxisRight = barChart.getAxisRight(); // 获取柱状图右侧的y轴 setAxis(xAxis, yAxisLeft, yAxisRight); //调用方法设置柱状图的轴线 return barChart; } public BarData setBarData() { List<BarEntry> entries = new ArrayList<>(); //定义一个数据容器 //生成随机数数据 for (int i = 0; i <= 12; i++) { entries.add(new BarEntry(i, new Random().nextInt(300))); } BarDataSet barDataSet = new BarDataSet(entries, "测试数据"); BarData barData = new BarData(barDataSet); return barData; //返回可用于柱状图的数据 }文章参考:https://blog.csdn.net/weixin_43344890/article/details/103008320
2020年10月10日
1,377 阅读
0 评论
0 点赞
1
...
27
28
29
...
65