Java 在if语句后识别扫描仪中的新行
我对android有点陌生,我一直对scanner类有问题,尤其是Java 在if语句后识别扫描仪中的新行,java,android,Java,Android,我对android有点陌生,我一直对scanner类有问题,尤其是.newline(),因为我无法在下面的代码中使用它java只是扫描文档中的所有内容而不检查行 package com.cal.omida.calupdater; import android.content.DialogInterface; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import an
.newline()
,因为我无法在下面的代码中使用它java只是扫描文档中的所有内容而不检查行
package com.cal.omida.calupdater;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Scanner;
public class MainActivity extends AppCompatActivity {
private TextView textv;
private Button submitButton;
private String TAG = "got here";
private String[] stringsarray = {"empty","empty","empty","empty","empty","empty","empty","empty","empty","empty","empty"};
private String exp = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
textv = (TextView) findViewById(R.id.mainentry);
submitButton = (Button) findViewById(R.id.process);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String temp = textv.getText().toString();
String main = removeTab(temp);
Scanner scanner = new Scanner(main);
String[] finalString = scannerclass(scanner);
Log.d("found", main);
for (int io = 0; io<11;io++){
exp+=finalString[io]+"\n";
}
alert(exp,scanner);
}
});
}
private String[] scannerclass(Scanner scanner){
scanner.useDelimiter(";");
int i = 0;
while (scanner.hasNext()) {
String text = scanner.next();
stringsarray[i] = text;
i++;
}
return stringsarray;
}
private void alert(String text, final Scanner scanner){
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage(text);
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Add to cal",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//todo add to cal function
exp=null;
if (scanner.hasNextLine()){
scanner.nextLine();
String[] finalString = scannerclass(scanner);
for (int io = 0; io<11;io++){
exp+=finalString[io]+"\n";
}
alert(exp,scanner);
}
}
});
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
exp=null;
}
});
alertDialog.show();
}
private String removeTab(String main) {
String main2 = main.replace("\t",";");
return main2;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
包com.cal.omida.calupdater;
导入android.content.DialogInterface;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AlertDialog;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入java.util.Scanner;
公共类MainActivity扩展了AppCompatActivity{
私有文本视图文本电视;
私人按钮提交按钮;
私有字符串TAG=“got here”;
私有字符串[]stringsarray={“empty”、“empty”、“empty”、“empty”、“empty”、“empty”、“empty”、“empty”、“empty”};
私有字符串exp=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
textv=(TextView)findViewById(R.id.mainentry);
submitButton=(按钮)findViewById(R.id.process);
设置支持操作栏(工具栏);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Snackbar.make(查看“替换为您自己的操作”,Snackbar.LENGTH\u LONG)
.setAction(“Action”,null).show();
}
});
submitButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串temp=textv.getText().toString();
主串=移除选项卡(临时);
扫描仪=新扫描仪(主);
字符串[]finalString=scannerclass(扫描仪);
日志d(“发现”,主要);
对于(int io=0;io而言,解决方法是使用一台扫描仪获取每一行,然后使用第二台扫描仪分离每一行。
例如:
String main = /*something*/;
Scanner lineScanner = new Scanner(main); // will scan each line, separated by a newline
while(lineScanner.hasNextLine()){
Scanner semicolonSeparatedScanner = new Scanner(lineScanner.nextLine());
/* work from here */
}
记住,您甚至可以使用String.split进一步简化代码:
while(lineScanner.hasNextLine()){
String[] semicolonSeparatedText = lineScanner.nextLine().split(";");
}