小编Jør*_*n R的帖子

什么是Java中的scan:{}块?

我正在查看8u40-b25 JDK类String的源代码,它包含一个scan: {}块:

2557        /* Now check if there are any characters that need to be changed. */
2558        scan: {
2559            for (firstUpper = 0 ; firstUpper < len; ) {
2560                char c = value[firstUpper];
2561                if ((c >= Character.MIN_HIGH_SURROGATE)
2562                        && (c <= Character.MAX_HIGH_SURROGATE)) {
2563                    int supplChar = codePointAt(firstUpper);
2564                    if (supplChar != Character.toLowerCase(supplChar)) {
2565                        break scan;
2566                    }
2567                    firstUpper += Character.charCount(supplChar);
2568                } else {
2569                    if (c != …
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
120
查看次数

不经过while循环不断检查端口

在程序(Java)中,我需要检查并行端口中的特定引脚.每当该引脚从逻辑0变为1(正边沿时钟)时,我必须读取端口上的数据并保存它.这种情况大约每10毫秒发生一次,但可能会有所不同.

为了做到这一点,我用一个不断检查端口的while循环创建了一个单独的线程,但这使得处理器变得疯狂,我知道这是因为while循环.我的问题是,如何在不使用处理器密集的while循环的情况下不断扫描端口?该程序并不准确知道何时发生引脚更改,只是它发生在每10ms左右.

java loops port-scanning

1
推荐指数
1
解决办法
275
查看次数

java while(scan.nextLine()!="$")

基本上,我试图做一个while循环,并继续阅读,直到线输入是$.当读取它时,循环应该退出.

但是我得到一个运行时异常java.util.InputMismatchException.

这是代码:

while (scan.nextLine() != "$") {
    temp1 = scan.nextInt();
    temp2 = scan.nextInt();
    addEdge(temp1, temp2);
}
Run Code Online (Sandbox Code Playgroud)

java loops while-loop

1
推荐指数
1
解决办法
2188
查看次数

哪个扫描用于从字符串中读取浮点数?

这似乎几乎是正确的,但它在换行线上窒息.最好的方法是什么?

package main

import (
    "fmt"
    "strings"
)

func main() {
    var z float64
    var a []float64
    // \n gives an error for Fscanf
    s := "3.25 -12.6 33.7 \n 3.47"
    in := strings.NewReader(s)
    for {
        n, err := fmt.Fscanf(in, "%f", &z)
        fmt.Println("n", n)
        if err != nil {
            break
        }
        a = append(a, z)
    }
    fmt.Println(a)
}
Run Code Online (Sandbox Code Playgroud)

输出:

n 1
n 1
n 1
n 0
[3.25 -12.6 33.7]
Run Code Online (Sandbox Code Playgroud)

更新:

请参阅下面@Atom的答案.我找到了另一种方法,如果错误是EOF就会中断,否则只是忽略它.我知道,这只是一个黑客,但我控制着源头.

    _, err := fmt.Fscanf(in, "%f", &z)
    if err …
Run Code Online (Sandbox Code Playgroud)

go

1
推荐指数
1
解决办法
1692
查看次数

内存扫描仪慢速扫描

我正在使用内存扫描仪,但扫描速度很慢..任何人都可以帮我改进吗?

procedure FirstScan(scantype, scanvalue: string);
var
 value :integer;
 dwEndAddr : dword;
 i:dword;
 mbi : TMemoryBasicInformation;
begin
  while (VirtualQuery(Pointer(DWORD(mbi.BaseAddress) + MBI.RegionSize), MBI, SizeOf(MEMORY_BASIC_INFORMATION))=SizeOf(TMemoryBasicInformation)) do begin
   if (MBI.State = MEM_COMMIT) and (MBI.Protect = PAGE_READWRITE) then begin
    dwEndAddr := DWORD(mbi.BaseAddress) + MBI.RegionSize;
     for i := DWORD(MBI.BaseAddress) to (dwEndAddr - 1 - sizeof(DWORD)) do begin
      Application.ProcessMessages;
      try
       if scantype = '1 Byte' then begin
        value := PBYTE(i)^;
        if scanvalue = IntToStr(value) then ListBox1.Items.Add(IntToHex(i,8));
       end;
       //others scantypes here...
      except
       Break;
      end;
     end;
   end; 
  end;
end; …
Run Code Online (Sandbox Code Playgroud)

c c++ memory delphi

1
推荐指数
2
解决办法
1497
查看次数

内存扫描程序始终返回相同的结果

使用此代码,我猜扫描更快,但扫描始终返回SAME地址.

例如:

00123456
00124567
00135478
00145893
00123456 //start repeat 
00124567
00135478
00145893
00123456 //start repeat 
00124567
00135478
00145893
Run Code Online (Sandbox Code Playgroud)

这是我的程序:

procedure SCANBYTE(value: integer);
var
 lpflOldProtect: dword;
 s: size_t;
 mbi: MEMORY_BASIC_INFORMATION;
 SI: SYSTEM_INFO;
 lpStartAddress, lpStopAddress: dword;
 addr: dword;
 i: dword;
begin
 GetSystemInfo(si);
 lpStartAddress := dword(SI.lpMinimumApplicationAddress);
 lpStopAddress := dword(SI.lpMaximumApplicationAddress);
 for addr := lpStartAddress to lpStopAddress do begin
  S:= VirtualQuery(Pointer(addr), MBI, SizeOf(MEMORY_BASIC_INFORMATION));
  if (S=SizeOf(MEMORY_BASIC_INFORMATION)) and (MBI.State = MEM_COMMIT) and (MBI.Type_9 = MEM_PRIVATE) and (MBI.RegionSize>0) and (MBI.Protect = PAGE_READWRITE) then begin
   for i := dword(MBI.BaseAddress) …
Run Code Online (Sandbox Code Playgroud)

memory delphi

1
推荐指数
1
解决办法
865
查看次数

存储输入后有".nextDouble"的目的是什么?

在用C++编程几个月后,进入中级水平后,我决定开始学习Java.我在扫描变量的工作原理方面遇到了一些麻烦.在C++中,"cin >>"非常简单,因为它可以将输入存储到先前声明的变量中.但是,在Java中,变量本身就是扫描仪?这是如何运作的?另外,在告诉扫描仪存储变量的位置后,有".nextDouble"的目的是什么?我是从教程中学到的,下面是我的代码.

import java.util.Scanner;
class calculator {
 public static void main(String args[]) {
     Scanner var = new Scanner(System.in);
     double fnum, snum, answer;
     System.out.println("Enter first number: ");
     fnum = var.nextDouble();
     System.out.println("Enter second number: ");
     snum = var.nextDouble();
     answer = fnum+snum;
     System.out.println(answer);


 }
     }
Run Code Online (Sandbox Code Playgroud)

java input calculator

1
推荐指数
1
解决办法
3万
查看次数

如何在ipad sdk中检测24小时时间格式

我试图检测时间格式是12小时/ 24小时格式.基于此我在日历中设定时间.
我使用以下代码在viewDidLoad方法中检测设备上的24小时格式.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [formatter stringFromDate:[NSDate date]];
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];
is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound);
Run Code Online (Sandbox Code Playgroud)

之后,我检查如下

if (is24h == TRUE) {
} else {
}
Run Code Online (Sandbox Code Playgroud)

但我总是得到is24h值是假的.如果设备设置为12小时格式,我可以在日历中设置时间.但如果是24小时格式,我无法设定时间.

你能告诉我我需要改变的地方吗?

iphone xcode objective-c nsdate nsdateformatter

1
推荐指数
1
解决办法
2066
查看次数

任何人都可以解释这个有效的C++程序如何返回null?

我偶然发现了这个:

int main() {
return!!!~!!!!!~!!!1??!??!1?

"^_^"  <:3

]:     "^.-"

<:      0.0 

<3  :>  ;}
Run Code Online (Sandbox Code Playgroud)

一个可爱的表情符号集合,据称返回null.C-fu比我更好的人解释它是如何工作的吗?

c++

1
推荐指数
1
解决办法
195
查看次数

android扫描SD卡中的所有.mp3文件

我正在尝试扫描SD卡中的所有.mp3文件并保存其名称.这是一个代码片段,负责这一点.我做错了什么?1.哪个是SD卡/ mnt/sdcard或/ SD卡的正确路径?

public class PlayerActivity extends Activity
{

    public void onCreate(Bundle savedInstanceState)
    {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.player_activity); 
    }
    public class SongsManager 
    {
        // SDCard Path
        //final String MEDIA_PATH = new String(MediaStore.Audio.Media.getContentUri("external").toString());
        private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

        public SongsManager()
        {

        }

        public ArrayList<HashMap<String, String>> getPlayList()
        {
         //   File home = new File(MEDIA_PATH);
            File home = Environment.getExternalStorageDirectory();

            if (home.listFiles(new FileExtensionFilter()).length > 0) 
            {

                for (File file : home.listFiles(new FileExtensionFilter())) 
                {
                    HashMap<String, String> song = new HashMap<String, String>();
                    song.put("songTitle", file.getName().substring(0, (file.getName().length() …
Run Code Online (Sandbox Code Playgroud)

media android

1
推荐指数
1
解决办法
2万
查看次数